2012-12-10 3 views
1

최신 CakePHP 응용 프로그램에 문제가 있습니다.CakePHP : 모델과 컨트롤러 간의 연결이 실패했습니다.

저는 카테고리 용 모델 및 컨트롤러를 만들었습니다. 내가

를 추가 할 때

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

:

모델 : 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')); 
    } 
} 

그러나 나는 오류

$this->loadModel('Categorie'); 

내 컨트롤러의 색인 기능이 작동합니다.

그래서 모델과 컨트롤러 간의 연결이 작동하지 않지만 잘 모르겠으며이를 수정하는 방법을 모르겠습니다.

도와주세요.

thnx

+0

어쩌면 누군가가 "카테고리"의 단수는 "분류"있음을 말 했어야 - 당신이 질문을 할 필요가 없습니다 것입니다 :) 왜냐하면 케이크가 자동으로 모든 일을 올바르게 처리 할 것이기 때문입니다. 하지만 지금까지 정답을 표시해야합니다. – mark

답변

7

CakePHP의 모델 매칭을위한 컨트롤러 명에게 단일 변이체를 사용하고 카테고리의 단수는 카테고리하지 categorie이다.

+0

오, 내가 얼마나 어리 석 었는지, 나는 케이크가 영어에 너무 민감하다는 것을 깨닫지 못했습니다. 영어가 제 첫 번째 언어가 아닙니다. 왜냐하면 IE는 IE가있는 경우 카테고리가 하나 인 것을 인식하지 못했습니다. Thnx – dakaap

+2

영어 단어가 확실하지 않은 경우, Cake가 예상 한 적절한 번역을 표시하게하려면 작업 표시에서 항상'Inflector :: pluralize'와'Inflector :: singularize'를 사용할 수 있습니다. 이 유틸리티에 대한 [bookbook] (http://book.cakephp.org/2.0/ko/core-utility-libraries/inflector.html)도 참조하십시오. – Oldskool

3

@ndm이 말한 것처럼 CakePHP 규칙을 사용해야합니다. 테이블은 다음 모델은 다음과 같이한다 categories를 호출해야합니다 :

class Category extends AppModel{ 

} 

을 그리고 당신은 그것을 포함 할 수 있습니다

이 CategoriesController에
$this->loadModel('Category'); 

이처럼 사용할 수 있습니다

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

테이블 이름을 달리 지정하려면 컨트롤러에서 $useTable 변수를 사용하여 t의 이름을 지정할 수 있습니다 수있는 모델이 함께 작동합니다.

2

또한 컨트롤러의 $uses 재산의 사용을 만들 수 :

public $uses = array('Categorie'); 
관련 문제