CakePHP向照片添加注释

CakePHP向照片添加注释,php,cakephp,Php,Cakephp,我在向网站上的照片添加评论时遇到问题。在意见表中,我有: id,用户id,照片id,内容,创建,修改,删除 鉴于此,我创建了: echo $this->Form->create('Comment'); echo $this->Form->input('title'); echo $this->Form->input('content'); echo $this->Form->input($this->Session->read('Use

我在向网站上的照片添加评论时遇到问题。在意见表中,我有:
id
用户id
照片id
内容
创建
修改
删除

鉴于此,我创建了:

echo $this->Form->create('Comment');
echo $this->Form->input('title');
echo $this->Form->input('content');
echo $this->Form->input($this->Session->read('User.id'), array('type'=>'hidden'));
echo $this->Form->input($photo['Photo']['id'], array('type'=>'hidden'));
echo $this->Form->end('Add comment');
我不知道这是不是正确的方法。cake如何知道两个隐藏值是
user\u id
photo\u id


Thx通知。

提交数据时,您必须在控制器中填充用户ID(因此用户不能以其他用户身份发布)。您可以使用
$this->Auth->user('ID')获取用户ID(前提是您正在使用内置的Auth组件)。至于照片ID,当你加载照片时,你显然在某处有这个,你只需要在保存之前将这些数据传递到
$this->request->data

简单的CakePHP 2方法如下:

public function viewPhoto($photoId) { //$photoId comes from your routes or something

    if($this->request->is('post')) {
        $this->request->data['Comment']['user_id'] = $this->Auth->user('id');
        $this->request->data['Comment']['photo_id'] = $photoId;
        $this->Photo->Comment->save($this->request->data);
    }

}

根据控制器/模型设置,此结构可能会略有不同。

提交数据时,您必须在控制器中填充用户ID(因此用户不能以其他用户的身份发布)。您可以使用
$this->Auth->user('ID')获取用户ID(前提是您正在使用内置的Auth组件)。至于照片ID,当你加载照片时,你显然在某处有这个,你只需要在保存之前将这些数据传递到
$this->request->data

简单的CakePHP 2方法如下:

public function viewPhoto($photoId) { //$photoId comes from your routes or something

    if($this->request->is('post')) {
        $this->request->data['Comment']['user_id'] = $this->Auth->user('id');
        $this->request->data['Comment']['photo_id'] = $photoId;
        $this->Photo->Comment->save($this->request->data);
    }

}

根据控制器/模型设置,此结构可能会稍有不同。

如果您正确执行此操作并正确设置了模型关联,Cake知道用户id和照片id是隐藏的,因为它们是外键。但是,您不正确地使用了
FormHelper::input()
,因此Cake不知道这两个输入应该是什么。如果您正确地执行此操作并正确设置了模型关联,Cake知道用户id和照片id是隐藏的,因为它们是外键。但是,您使用的
FormHelper::input()
不正确,因此Cake不知道这两个输入应该是什么。最好不要向表单添加隐藏值(尤其是在安全组件未激活的情况下),而是在保存()之前在控制器中添加这些值call.it是一个主要针对问题创建者的注释-因为您没有明确指出安全组件是一项要求,我认为最好添加以下内容:)但是,是的,您的代码说明了这一点。最好不要在表单中添加隐藏值(尤其是在安全组件未激活的情况下)但是在save()调用之前在控制器中添加这些值。这是一个主要针对问题创建者的注释-因为您没有明确指出安全组件是一项要求,所以我认为最好添加以下内容:)但是,是的,您的代码说明了这一点。