Форма ввода комментариев Cakephp остается неизменной после нажатия кнопки «Добавить». - PullRequest
1 голос
/ 06 декабря 2009

Я создал блог-сайт от «Начиная CakePHP от новичка до профессии», - Дэвид Голдинг. У меня есть представление комментариев, перечисленных ниже:

<div class="comments form">
<?php echo $form->create('Comment');?>
    <fieldset>
        <legend><?php __('Add Comment');?></legend>
    <?php
        echo $form->input('name');
        echo $form->input('content');
        echo $form->input('post_id');
    ?>
    </fieldset>
<?php echo $form->end('Submit');?>
</div>
<div class="actions">
    <ul>
        <li><?php echo $html->link(__('List Comments', true), array('action' => 'index'));?></li>
        <li><?php echo $html->link(__('List Posts', true), array('controller' => 'posts', 'action' => 'index')); ?> </li>
        <li><?php echo $html->link(__('New Post', true), array('controller' => 'posts', 'action' => 'add')); ?> </li>
    </ul>
</div>

Проблема заключается в том, что после нажатия кнопки Отправить значения остаются в полях имени и содержимого. Кто-нибудь может мне помочь?

Спасибо

Ответы [ 4 ]

2 голосов
/ 06 декабря 2009

У вас есть несколько вариантов здесь:

Вы можете перенаправить после отправки в вашем контроллере, после обработки метода $ this-> save, место:

$this->redirect(array('action'=>'index'));

, где действие - это то место, куда вы хотите вернуться.

Или вы можете очистить значения, снова в контроллере, после $ this-> save

$this->data['Comment']['name'] = "";
etc...
0 голосов
/ 21 июля 2010

Согласно http://book.cakephp.org/view/1366/form, вы не должны использовать $ajax->form() и $ajax->submit() в одной форме.

И что теперь?

0 голосов
/ 08 декабря 2009

мое действие добавления в контроллере комментариев выглядит так:

function add() {
    if (!empty($this->data)) {
     if ($this->Comment->save($this->data)) {
        $comments = $this->Comment->find('all', array('conditions' => array('post_id' => $this->data['Comment']['post_id']), 'recursive' => -1));
        $this->data = $this->Comment->create();
        $this->set(compact('comments'));
        $this->render('add_succes','ajax');
        } else { $his->render('add_failure','ajax');}
    }
}

Я использую ajax для повторной визуализации комментариев. Моя проблема в том, что в форме комментария старые значения все еще остаются, а не стирают их

0 голосов
/ 07 декабря 2009

Внутри вашего контроллера комментариев убедитесь, что ваша функция добавления перенаправляется после выполнения $this->Comment->save($data);

Добавьте это, убедившись, что save () сработало:

$this->flash('Thanks for the comment',array('controller'=>'comments','action'=>'index'));

Редактировать

Используйте помощник ajax $ajax->create и $ajax->submit. то есть.

$ajax->submit('Add comment', array('update' => 'refreshArea','indicator' =>
'loading','complete' => 'document.commentForm.reset()')); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...