お世話になります。
現在cakePHPを始めて3カ月の初心者です。
以下のシステムを作成していますが
途中で躓いた為ご教示いただけますと助かります。
◆完了していること
・掲示板を作成
・記事1つに対してコメントを投稿できるよう投稿欄作成(記事はPostというDBに登録、コメントはCommentというDBに登録)
(記事が親、コメントが子といった関係性かと思います)
・コメントを投稿するとCommentに登録される
◆つまづいている箇所
・Postというテーブルに「id」というカラムがあります。
Post.php(Model)で、$hasManyのforeignKeyに「post_id(Commentテーブルのカラム)」を設定し、
Postテーブルのid = Commentテーブルのpost_id
という状況になっているかと思います。
コメント投稿をした際にhiddenで「post_id」持たせ、コメントを登録するとCommentテーブルの
「post_id」カラムに投稿した記事のid(Post)が登録され、どのコメントがどの記事のものであるか
判別できるようにしたいのですが、
今現在、DBにコメントは登録されるものの、Commentテーブルの「post_id」は「0」になってしまい
どのコメントがどの記事のものであるか分からない状態です。
上記でも書いているように、
Post.php(Model)で、$hasManyのforeignKeyに「post_id(Commentテーブルのカラム)」を設定
しているのでViewで「echo $this->Form->hidden('Comment.post_id');」と書けば
Postテーブルのidがhiddenで送信出来ると思っているのですがそもそも間違っていますか?
〇view【hiddenでpost_idを持たせたい(Postテーブルのid)】
<?php echo $this->Form->create('Comment',array('url'=>array('controller' => 'comments', 'action' => 'add'))); echo $this->Form->hidden($post['Post']['id']); echo $this->Form->input('name',array('label'=>'名前')); echo $this->Form->input('comment',array('label'=>'コメント')); echo $this->Form->end('コメントを投稿する'); ?>〇Controller【viewで設定したhiddenの値を受け取ってCommnetテーブルの「post_id」カラムに格納したい】__
public function add() {
if($this->request->is('post')){
if($this->Comment->save($this->request->data)){
$this->Session->setFlash('投稿されました');
$this->redirect($this->referer());
} } }
Controllerでどのように書いたらhiddenの値を受け取ってCommnetテーブルの「post_id」カラムに格納出来るのか
分からずずっと悩んでいます。
こちらと同じ事がしたいのですがpost_idが「0」になってしまいます。
http://www.grooving-earth.com/cakephp-lesson/#19
19) コメント機能を実装
変なコードを書いていると思いますがご教示いただきますと助かります。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー