所以,我得到了一个致命的错误,因为当控制器调用该方法时,该方法未定义。尽管这不是真的,因为该方法位于类模型内。
学生控制器.php
<?php
class StudentsController extends AppController{
public function index(){
$students = $this->Student->find('all');
$this->set('students', $students);
}
public function add(){
if($this->request->is('post')){
$this->formatData($this->request->data);
}
}
}
?>
然后是我的模型:学生.php(模型)
<?php
class Student extends AppModel{
var $studentData;
public function formatData($studentData){
if(is_null($studentData)){
return false;
}else{
echo $studentData;
}
}
}
?>
您不是在模型上调用该方法,而是在没有此类方法可用的控制器上调用该方法,因此会出现错误。
虽然控制器可以自动加载模型,但它不会公开其 API,它只是通过 magic 属性访问器提供模型的实例。
所以而不是
$this->formatData($this->request->data);
您必须像这样在模型上调用该方法:
$this->Student->formatData($this->request->data);
参见
- http://book.cakephp.org/2.0/en/controllers.html#Controller::$uses
- http://book.cakephp.org/2.0/en/controllers.html#Controller::loadModel
- http://book.cakephp.org/2.0/en/models.html#understanding-models