2013-10-23 46 views
0

所以,我得到一個致命錯誤,因爲控制器調用方法時該方法未定義。雖然這是不正確的,因爲該方法在類模型中。CakePHP:控制器未找到模型函數

StudentsController.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); 
      } 
     } 
    } 

?> 

然後我的模型: Student.php(型號)

<?php 
    class Student extends AppModel{ 
     var $studentData; 

     public function formatData($studentData){ 
      if(is_null($studentData)){ 
       return false; 
      }else{ 
       echo $studentData; 
      } 
     } 
    } 
?> 
+1

你是不是調用模型上的方法,但在控制器上:'$這個 - > FormatData將($這個 - >請求 - >數據);'應該是'$這個 - >以學生> formatData($ this-> request-> data);' – ndm

+0

謝謝,這工作。 – pmac89

+0

@ AD7six你是對的,我只是有點懶得寫一個包含多個句子的答案,我認爲一個好的答案應該包括一些解釋:)我會趕上這個... – ndm

回答

2

你不是調用模型上的方法,但在控制器上哪裏有沒有這樣的方法可用,因此錯誤。

雖然控制器可能會自動加載模型,但它不公開其API,它只是通過魔術屬性訪問器提供模型的實例。

所以不是

$this->formatData($this->request->data); 

你必須調用該方法的模型是這樣的:

$this->Student->formatData($this->request->data); 

參見