2010-06-25 4 views
3

이것은 내 문제입니다 테이블 상태 ('id', 'state_name')에서 드롭 다운 목록 상자를 만듭니다. 필드 나 ("ID") 상태를 저장하는 '상태'이다. 는 그래서 드롭 다운 상자를 채우는 loadModel을 사용 하였다. 내가 뷰 측드롭 다운 상자를 만들기위한 배열 조작 cakephp

$this->loadModel('State'); 
$this->set('states',$this->State->find('all')); 

사용 내 컨트롤러

$form->select('State_id',$states); 

출력에 테이블 이름, ID 및 이름 표시하고 있습니다.

pr()을 사용하여 $ states를 인쇄 할 때; 내가 도착하면

Array 
(
    [0] => Array 
     (
      [State] => Array 
       (
        [id] => 1 
        [state_name] => state1 
       ) 

     ) 

    [1] => Array 
     (
      [State] => Array 
       (
        [id] => 2 
        [state_name] => state2 
       ) 

     ) 

하고 그래서 상기 어레이 에서 어레이와 같은 어레이 (1 => 상태 1, 2 => 상태 2)를 생성하거나 생성하는 다른 방법이 존재하는 방법

에 드롭 다운 목록 상자

친절

답변

1

이 방법입니다 :

$fields = array('id','state_name'); 
$states = $this->State->find('list',array('fields'=>$fields)); 
$this->set(compact('states')); 

또는 한 줄이 작동하는 동안

$this->set('states',$this->State->find('list',array('fields'=>array('id','state_name')))); 
+1

find ('list')는 매우입니다. 유용한 옵션 알기 : http://book.cakephp.org/view/449/find – Leo

+0

지난 2 시간 동안 고민을 풀어 주셔서 감사합니다. 도 위의 기사를 읽을 것입니다. – chinni776

+0

If 위에서'$ form-> input ('state_id')'를 넣으면, Cake는'$ states' 변수를 찾을 수 있으면 select 드롭 다운을 자동으로 생성하고 채 웁니다. 케이크는 마술입니다. – deizel

1

는 아래의 코드는 원래 배열에서 원하는 배열을 만들 때 도움이

(210)

결과 :

Array 
(
    [1] => state1 
    [2] => state2 
) 
+0

, 그것을 할 수있는 가장 좋은 방법은 아니다. 그것은 나중에 이해하기가 어색 할 것입니다. find()의 'list'옵션 인 cakephp 래퍼를 사용하는 것이 더 좋습니다. – Leo

+0

내가 사용하고있는 값을 acess에 던지는 오류가 발생했습니다 상태 1에 [states] [ 'State'] [ 'state_name'] 레오 응답은 내가 검색 한 것입니다 – chinni776

관련 문제