我有两个表用户和友谊,我已经创建了模型和友谊控制器,但是一旦我尝试添加"一个朋友得到一个我错过的错误" add_friend"图。
这是来自Friendshipscontroller的add_friend函数
function add_friend ( $id ){
if(!empty($this->data)){
$this->Friendship->Create();
if($this->Friendship->save($this->data)){
$this->Session->setFlash('Friendship Requested');
$this->redirect(array('controller'=>'users','action'=>'profile'));
}
}
这就是我在视图中引用它的方式
<?php echo
$this->Html->link('Add as Friend', array('controller' => 'Friendships', 'action'=>'add_friend', h($user['User']['id'])));
我不知道自己做错了什么,所以我不知道在哪里解决这个问题。
答案 0 :(得分:3)
您方法中的第一行:
if(!empty($this->data)){
被评估为&#34; false&#34;因为$ this-&gt;数据中没有数据。因此,该方法没有执行任何其他操作,标准cakePHP流程仍在继续。这意味着,渲染视图。
显然,由于$ this-&gt;数据为空,因此您的方法的大多数代码都是错误的&#34;。谁和谁之间的友谊? 假设你已经在处理Auth,以及友谊和用户之间的关系,那么这样的事情就可以了:
function add_friend ( $id ){
if(!empty($id) && $this->Friendship->User->exists($id)){
$this->Friendship->create();
if($this->Friendship->save(array('user_id' => $id, 'requesteduser_id' => $this->Auth->user('id')))){
$this->Session->setFlash('Friendship Requested');
$this->redirect(array('controller'=>'users','action'=>'profile'));
}
}
}
希望它有所帮助!