2010-05-10 4 views
0

this article에 설명 된대로 CakePhp에서 정적 페이지를 관리하는 간단한 방법을 구현하려고합니다.App :: import()가 작동하지 않는 이유는 무엇입니까?

내가 직면 한 문제는 App::import()가 routes.php 파일에서 필수 클래스를 가져 오지 않는 것입니다.

App::import('Model','StaticPage'); 
$page = new StaticPage(); 

$slugs = $page->find('list', array(
     'fields' => array('StaticPage.slug'), 
     'order' => 'StaticPage.slug DESC' 
)); 

내가지고있어 오류 : Fatal error: Class 'StaticPage' not found in ...
이 클래스는 모델 폴더 (모델/StaticPage.php)에 존재하는

코드는 다음과 같다.

난 그냥 몇 주 전에 CakePHP를 시작하고 난 여기에 간단한 일이 ...

내가 CakePHP는 1.3과 PHP 5.2.42을 사용하고 누락 것 같아.

답변

1

나는 그것이 작동하지 않는 이유는 CakePHP의 naming conventions for file names을 따르지 않았기 때문이라고 생각합니다. 파일 이름은 소문자이고 밑줄입니다. 따라서 파일 이름을 static_page.php으로 변경하면 문제가 해결됩니다.

0

다음과 같은 오류 메시지가 표시됩니다. 클래스 StaticPage가 누락되었습니다. 이 파일을 가지고 있습니까? 그렇게한다면 오토로더가 찾을 수 있도록 파일 이름이 올바른지 확인하십시오.

+0

파일은 app/models/StaticPage.php에 있으며 링크 된 문서에서와 같이 구현됩니다 –

1

참조한 기사를 빠르게 살펴본 결과 스 니펫이 일치하지 않습니다. ClassRegistry 클래스 (가져올 필요가 없음)를 가져온 다음 StaticPage을 인스턴스화하려고합니다. 나는 모두 함께 AppImport 참조를 제거하고 ClassRegistry을 사용하는 것이 좋습니다 것 :

$page = ClassRegistry::init('StaticPage'); 

당신은 두 모델을로드하고 객체를 인스턴스화 ClassRegistry::init() 때문에 AppImport 라인이 필요하지 않습니다.

다른 잠재적 인 문제는 사용중인 모델 파일 이름이 규칙을 준수하지 않는다는 것입니다. models/static_page.php이어야합니다. 케이크의 굴절은 표준 편차를 다루지 않을 수도 있습니다.

+0

내 대답을 게시 함과 동시에 스 니펫을 편집 한 것처럼 보입니다. 이제 스 니펫이 일치합니다. –

관련 문제