문제

Cake 1.2에는 개발자가 모델을 만들 필요 없이 Cake가 런타임에 검색 작업을 수행하고 모델을 만들도록 하는 기능이 있습니다.이 과정은 매번 발생하며 깔끔하지만 제 경우에는 매우 위험합니다.나는 이것에 대해 어딘가에서 읽었고 지금은 이것의 나쁜 면을 경험하고 있습니다.

나는 모든 파일을 포함하는 플러그인을 만들었고 모든 것이 훌륭해 보였습니다.그것은 내가 모델의 연관과 기능 중 일부를 사용하려고 시도하기 전까지였습니다.그러자 케이크는 내가 만든 이 모델이 존재하지 않는다고 주장합니다. 던지거나 오류가 발생하는 대신 이 자동 모델 기능을 사용하여 케이크로 범위를 좁혔습니다.!그래서 나는 무엇이 잘못되었는지 전혀 모릅니다!

이 자동 모델 기능을 비활성화하는 방법을 아는 사람이 있습니까?좋은 생각이지만 내 플러그인에서 어디가 잘못되었는지 찾을 수 없는 것 같고 오류가 있으면 매우 도움이 될 것입니다!

도움이 되었습니까?

해결책 2

케이크 1.2

그것은 핵이고 핵심 케이크 파일을 편집해야 하기 때문에 보기 흉하지만 이것이 내가 하는 방법입니다:\cake\libs\class_registry.php :라인 127 같은

if (App::import($type, $plugin . $class)) {
    ${$class} =& new $class($options);
} elseif ($type === 'Model') {
    /* Print out whatever debug info we have then exit */
    pr($objects);
    die("unable to find class $type, $plugin$class");
    /* We don't want to base this on the app model */
    ${$class} =& new AppModel($options);
}

케이크 2

Costa는 95행의 init 함수에서 $strict를 true로 변경할 것을 권장합니다. Cake\Utility\ClassRegistry.php

초기화에 대한 Cake Api 문서를 참조하세요.

ClassRegistry.php - 초기화 함수

다른 팁

실제로 모델 파일을 생성하고 var $useTable = false로 설정할 가능성은 항상 있습니다.
이것이 당신이 요구하는 것이 아니고 모델과 그 연관이 실제로 존재하지만 Cake가 그것을 찾을 수 없는 것 같다면 실제 모델과 클래스 이름 모두에서 모든 모델의 이름과 클래스 이름을 세 번 확인해야 합니다. 모델 정의 및 연관 정의에 있습니다.

AFAIK 자동 모델링을 비활성화할 수 없습니다.

사용

var $useTable = false;

모델 정의에서.

모두 삭제 캐시된 파일 (app/tmp 아래의 모든 파일, 폴더 유지)

모델이 예상치 못한 방식으로 작동하는 것처럼 보이는 대부분의 경우, 변경 사항이 포함되지 않는 경우가 많습니다. 이는 해당 케이크가 모델의 이전 캐시 버전을 사용하고 있기 때문입니다.

어...어디부터 시작해야 할까요?먼저 Alexander가 제안한 대로 앱 캐시를 지우세요.

여전히 동일한 동작이 발생한다면 클래스 및/또는 파일 이름에 문제가 있을 수 있습니다.

기억하다 규칙, 컨트롤러의 경우:

* classname: BlastsController
* filename: blasts_controller.php

모델의 경우:

* classname: Blast
* filename: blast.php

잊지 마세요 불규칙한 어조를 다루다 제대로.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top