私は次のような状況にあります。投稿hasManyコメント
コメントは投稿に属します
/ Views / Posts / viewに、コメント付きの投稿を表示します。また、投稿ごとにコメントフォームを表示する必要があります。したがって、ビューに要素add_comment.ctpを使用する必要があります(間違っている場合は訂正してください。ただし、この質問はこちらを参照してください)。
/Views/Posts/view.ctp:
// add comments
echo $this -> element('add_comment',array('post_id' => $entry['Post']['id']), array('cache' => array('config' => 'long')));
要素:
/**
* Element for adding comments
*
*/
echo $this -> Form -> create('Comment', array('url' => array(
'controller' => 'comments',
'action' => 'add',
$post_id
)));
?>
<fieldset>
<legend><?php echo 'Add Comment'; ?></legend>
<?php
echo $this -> Form -> input('author_name');
echo $this -> Form -> input('author_email', array('type' => 'email required'));
echo $this -> Form -> input('author_website');
//echo $this->Form->input('date_published');
echo $this -> Form -> input('text');
//echo $this->Form->input('is_archived');
?>
</fieldset>
<?php echo $this -> Form -> end(array('label' => 'Post!')); ?>
ご覧のとおり、フォームはCommentsControllerの追加アクションに送信されます。さて、大きな問題です。追加アクションは、検証結果などのデータを実際にフォームに戻すにはどうすればよいでしょうか。つまり、フォームデータも保持する必要があるため、誰かが無効なデータを入力した場合でも、そのデータは失われません。
通常、追加アクションは/ View / Comments / addをレンダリングしますが、このビューは必要なく、定義もしていません。
これまで、コメントが保存された後、$this->redirectを使用して/Views/ Posts / viewに戻りましたが、リダイレクトは何も渡さずに/ Views / Posts/viewを呼び出すだけです。では、要素をスムーズで自動魔法のフォーム処理と組み合わせて使用するにはどうすればよいですか?