2012-12-10 53 views
1

我的最新CakePHP應用程序出現了問題。CakePHP:模型和控制器之間的連接失敗

我爲類別製作了一個模型和控制器。

型號:Categorie.php

class Categorie extends AppModel{ 
    public $name = 'Categorie'; 
} 

控制器:CategoriesController.php

class CategoriesController extends AppController { 
    public function index(){ 
     $this->set('list', $this->Categorie->find('all')); 
    } 
} 

但是,當我訪問的頁面出現錯誤:

Fatal error: Call to a member function find() on a non-object 

當我添加

$this->loadModel('Categorie'); 

到索引函數在我的控制器它將工作。

所以我想模型和控制器之間的連接不工作,但我不知道,我不知道如何解決這個問題。

請幫我一把。

日Thnx

+0

也許有人應該告訴你的是,單數的「類別」是「類別」 - 那麼你就不需要問這個問題:)因爲蛋糕會自動做正確的事情。但是現在你仍然應該給出正確的答案。 – mark

回答

7

CakePHP中使用控制器名稱奇異變體用於模型匹配,並且單數的類別類別,不categorie

+0

哦,我是多麼愚蠢,我沒有意識到,蛋糕是如此敏感的英語,並導致英語不是我的第一語言,我沒有意識到是單類是與Y而不是IE瀏覽器。 Thnx – dakaap

+2

如果您不確定英語單詞,您可以在任何工作視圖中始終使用「Inflector :: pluralize」和「Inflector :: singularize」來讓Cake顯示它所期望的正確翻譯。另請參閱有關此實用程序的[書籍頁面](http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html)。 – Oldskool

3

正如@ndm所說,你應該使用CakePHP約定。 你的表應該叫categories,那麼你的模型應該是這樣的:

class Category extends AppModel{ 

} 

然後你就可以用它包含:

$this->loadModel('Category'); 

在CategoriesController你可以使用它像這樣:

class CategoriesController extends AppController { 
    public function index(){ 
     $this->set('list', $this->Category->find('all')); 
    } 
} 

如果您想爲您的表命名,您可以使用$useTable變量在控制器中指定t的名稱能夠使用該模型。

2

您也可以利用控制器的$uses屬性:

public $uses = array('Categorie'); 
相關問題