我不是 CakePHP 专家,但我仍然认为拥有自己的控制器是有意义的。从我做的那些 CakePHP 博客教程之一的记忆中,你需要在评论模型中链接评论和帖子。这是我从中获得的一些代码:
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 的逻辑。
要保存评论(在您的个人/视图中):
<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();
?>
在您的 CommentsController 中:
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 自己添加的。希望现在有意义。此外,您可能需要一条路线,以便它获取 /comments/add/ID。我不知道这部分。:)