2013-08-15 1 views
0

저는 pageName 속성을 가진 객체 CuratedPage를 가지고 있습니다.cakephp에서 폼 헬프를 사용하여 객체 배열을 반복하는 방법은 무엇입니까?

I는 컨트롤러 CuratedPage 오브젝트의 배열을 생성하고,이 같은보기 위해 설정하고 : 뷰

$this->set('curatedPages', $curatedPages); 

이 같은 페이지 이름의 드롭 생성하고 :

$pageNames = array(); 
foreach($curatedPages as $curatedPage) { 
    array_push($pageNames, $curatedPage->getPageName()); 
} 
echo $this->Form->input('curatedPage', array('options' => $pageNames)); 

cakephp에 스칼라 값의 배열을 만드는 대신 CuratePage 객체의 배열을 Form -> input (...)으로 전달할 수있는 방법이 있습니까?

+0

나는 그렇게 생각하지 않는다. 그러나 당신은 그 배열을보기에 가지고있는 대신 컨트롤러에 코드를 생성하는 것으로 옮길 수있다. –

답변

0

이 경우 양식 도우미가 무엇을해야하는지 잘 모르겠습니다. 그러나 PHP 버전 (> = 5.2.0 필요)에 따라 마법 __toString() 메서드가이를 수행 할 수 있습니다. 페이지 이름을 반환하도록 구현하면 게시 된 스 니펫과 동일한 결과, 즉 숫자로 색인 된 (값 특성) HTML 옵션 목록과 페이지 이름이 레이블로 끝납니다.

그러나이 특정보기에서이 목적으로 만 구현하면 나에게 잘못된 것으로 보입니다. 사용자 지정 도우미를 활용하는 것이 더 좋거나 @BrianGlaz 컨트롤러에 데이터를 준비하는 것이 좋습니다.

+0

안녕하세요, 저는 이와 같은 것을 달성하려고합니다. 이 코드 스 니펫은 groovy에서 왔습니다. – Pawan

+0

글쎄, CakePHP는 Grails가 아니며 PHP는 Groovy가 아니기 때문에 (''__toString()'을 구현하면 앞에서와 마찬가지로''FormHelper''가 그렇게 작동하지 않습니다) PHP 스 니펫으로 이 특정 Grails 태그는 AFAIU가'option' 엘리먼트'value' 애트리뷰트에'CuratedPage.toString()'의 결과를 사용하고'option' 엘리먼트 바디에'CuratedPage.slug'의 값을 사용합니다. FormHelper가 어떻게 작동하는지와 완전히 다릅니다. 다시 말하지만'options' 배열을 준비하는 도우미를 사용하거나 컨트롤러를 준비하는 것이 가장 좋은 방법 일 것입니다. – ndm

관련 문제