2013-10-16 3 views
2

문제가 약간 이상합니다. 2 일이 지난 후에도 그걸로 싸우고 있습니다. 버그로 게시하기 전에 이것이 내 실수가 아니 었는지 확인하고 싶습니다.치명적인 오류 : NewsModel 클래스를 다시 선언 할 수 없습니다.

나는 깨끗한 CakePHP 사본이 있는데, 나는 DB를 설치하고 Cake는 제 DB에 문제없이 연결할 수 있습니다. 내 DB에서 나는 테이블이 "뉴스"라는 이름이, 나는 다음 코드를 사용하여 컨트롤러가 :만큼 내 테이블에 대한 모델 파일을 작성 해달라고으로

<?php 

class UsersController extends AppController { 
    public $uses = array('News'); 

    public function news(){ 
     $news = $this->News->find('all'); 
     var_dump($news); 
     die; 
    } 
} 

을,이 쿼리가 성공적으로 실행되지만 같은 나는 다음과 같은 모델 파일을 만들 때 곧 내가 코드 뒤에 오는 오류가 표시 (모델 폴더에 News.php로 저장) :

<?php 

class NewsModel extends AppModel { 
} 

오류 :

Fatal error: Cannot redeclare class NewsModel in C:\...\cakephp\app\Model\News.php on line 4 

나는 바람에있어 ows and running php> 5.2.8

답변

6

글쎄, 클래스는 모델 부분없이 "News"여야합니다.

class News extends AppModel { } 

워드 프로세서는 모든 곳에서 examples을 표시합니다. "뉴스"컨트롤러가 NewsController이고 뉴스 구성 요소가 NewsComponent이라서 혼란이있을 수 있지만 답변에서 here을 얻었으므로 이름 충돌을 피할 수 있습니다.

향후 개발을 위해 모델/컨트롤러/뷰를 구운 다음 필요없는 것을 삭제하고 변경해야하는 것을 변경하는 것이 더 쉽습니다.

+2

신! 나는 이름 뉴스 후에 모델을 어떻게 넣었는지 모른다. !!! – mohamnag

-1

모델은 단수에 더 잘 맞는 케이크 convetions

해야
<?php 
App::uses('AppModel', 'Model'); 
class New extends AppModel { 

} 
?> 

$news = $this->New->find('all'); 
+3

"new"는 "뉴스"([포럼 참조] (http://forum.wordreference.com/showthread.php?t=1067564))의 단 하나가 아닙니다. S – Nunser

+3

"new"는 PHP에서 예약어입니다 클래스 이름으로 사용하면 구문 분석 오류가 발생합니다. – dhofstet

0

var에 $의 useTable = '뉴스'를 사용해보십시오; 모델에 .. 문제가 해결되기를 바랍니다.

+0

이 문제는 분명히 다른 것이었지만, 힌트를주기 위해 이미 시도했지만이 것은 아무런 차이가 없었습니다.) – mohamnag