私は CakePHP の専門家ではありませんが、独自のコントローラーを持つことは理にかなっていると思います。それらの CakePHP ブログ チュートリアルの 1 つを行ったときに覚えていることは、コメント モデルでコメントと投稿をリンクする必要があるということです。これは私が持っているコードの一部です:
class Comment extends AppModel
{
var $name = ‘Comment’;
var $belongsTo = array(‘Person’);
}
次に、コントローラー (comments_controller.php) が必要です。
class CommentsController extends AppController
{
var $name = ‘Comments’;
var $scaffold;
}
いくつかの SQL:
CREATE TABLE comments (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
author VARCHAR(50),
comment TEXT,
person_id INT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
はCRUD$scaffold
アプリケーションを作成するので、ブラウザで /comments に移動すると、コメントの作成、読み取り、更新、および削除を行うことができます。したがって、ご覧のとおり、ここではあまり関与していません。必要なのは、データベース テーブルと、person_id を提供するための小さなロジックだけです。
コメントを保存するには (Person/view で):
<h2>Add comment</h2>
<?php
echo $form->create(‘Comment’, array(‘action’=>‘add/’.$person[‘Person’][‘id’]);
echo $form->input(‘author’);
echo $form->input(‘content’);
echo $form->submit(‘Add comment’);
echo $form->end();
?>
そしてあなたのコメントコントローラーで:
function add($id = NULL) {
if (!empty($this->data)) {
$this->data['Comment']['person_id'] = $id;
$this->data['Comment']['id'] = '';
if ($this->Comment->save($this->data)) {
$this->Session->setFlash('Commented added');
$this->redirect($this->referer());
}
}
}
基本的に、Cake が自動的に追加する標準の add アクションを上書きします。それが今、理にかなっていることを願っています。また、/comments/add/ID を取得するためのルートが必要になる場合もあります。この部分についてはわかりません。:)