거의 알려지지 않은 사실 : 케이크는 객체 또는 객체의 속성으로 반환합니다.
// In your View:
debug($this->viewVars);
Shwoing $this
는 viewVars
재산는 컨트롤러 액션에서 $this->set('key', $variable)
또는 $this->set(compact('data', 'for', 'view'))
에 해당 뷰 오브젝트 및 입니다 :배열는 구문 설탕입니다.
Keystrokes를 위해 $Post->id
에 스쿼시 문제가있는 이유는 Cake입니다. Cake는 무거운 리프터가되도록 설계 되었기 때문에 내장 된 ORM은 엄청나게 강력하고 피할 수 없으며 자동 콜백, 자동 데이터 전달, 쿼리 생성 등과 같은 무한대의 무한대 관련 테이블을 처리하기위한 것입니다. 다차원 배열의 기본 깊이는 find 메소드에서 여러 개의 연관된 모델 (예를 들어)이있는 $ Post를 두 개 이상 사용하자마자 어레이를 믹스에 도입 했으므로 피할 수는 없습니다.
다른 find
메서드는 서로 다른 깊이의 배열을 반환합니다. 생성 된 컨트롤러 코드에서 볼 때 $this->set('posts', $this->paginate());
-보기는 $this->set('post', $this->Post->read(null, $id));
을 사용하고 편집은 $this->set
을 사용하여 전혀 찾을 수 없음 - $this->data = $this->Post->read(null, $id);
을 할당 함을 볼 수 있습니다.
FWIW, Set::map
은 아마 undefined index
오류를 던집니다. (추측) 편집 작업을 매핑하려고했기 때문에, amirite? 기본적으로 편집 동작은 $this->set
을 사용하여 연관된 모델 찾기를보기로 설정합니다. $ this-> read 결과는 $this->data
으로 대신 전송됩니다. 이것이 아마도 Set :: map이 실패한 이유입니다. 어느 쪽이든, 당신은 여전히 $Post[0]->id
또는 $Post->id
(사용 방법을 찾는 방법에 따라 다름)을 목표로 삼 으려합니다. 이는별로 개선되지 않습니다.
다음은 이러한 작업에 대한 설정 :지도() 속성 깊이의 몇 가지 일반적인 예이다 :
// In posts/index.ctp
$Post = Set::map($posts);
debug($Post);
debug($Post[0]->id);
// In posts/edit/1
debug($this-viewVars);
debug($this->data);
// In posts/view/1
debug($this-viewVars);
$Post = Set::map($post);
debug($Post->id);
http://api13.cakephp.org/class/controller#method-Controllerset
http://api13.cakephp.org/class/model#method-Modelread
http://api13.cakephp.org/class/model#method-ModelsaveAll
HTH.
이것이 효과가 있습니다. 감사! 그것은 아마 당신이 말한 것처럼 완벽하지는 않지만, 어떻게 든 필요하다면이 방법으로 배열과 객체 버전 모두에 접근 할 수 있습니다! 감사합니다 –