在我正在开发的应用程序中,我在view.ctp文件中创建了一个表单:
<?php
echo $form->create('Answer',array('action'=>'addanswer'));
echo $form->input('ques',array('value'=>'1'));
$userInfo=$this->Session->read('Auth.User');
$user=$userInfo['id'];
echo $form->input('user',array( 'value'=>$user));
echo $form->input('answer');
echo $form->end('Submit answer');
?>
在answers_controllers.php文件中,我有以下代码:
<?php
class AnswersController extends AppController{
var $name= 'Answers';
var $uses = array('User');
function addanswer(){
if(!empty ($this->data)){
echo $this->data;
if($this->Answer->save($this->data)){
$this->Session->setFlash('The answer has been addedd successfully');
$this->redirect(array('action'=>'index'));
}
else{
$this->Session->setFlash('The answer was not saved. Please re enter the details');
}
}
$this->set('title_for_layout','Add a new Answer');
}
}
?>
但是当我按下提交答案按钮(在view.ctp中提到)时,我会在非对象上调用成员函数save()。 与此非常相似的代码工作得很好,但这不起作用。
我是php的新手,所以对于如何解决这个问题的任何帮助都将不胜感激。
非常感谢你。
答案 0 :(得分:0)
不要使用
var $uses = array('User');
!否则你正在“摧毁”真正的控制器模型(在这种情况下可能是Answer
)。
你的答案模型应该通过$ belongsTo与用户有关系。 因此,您仍然可以通过
访问User对象$this->Answer->User->...