CakePHP:控制器找不到模型函数


CakePHP: Controller not finding Model function

所以,我得到了一个致命的错误,因为当控制器调用该方法时,该方法未定义。尽管这不是真的,因为该方法位于类模型内。

学生控制器.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