2012-03-06 2 views
0

cakephp에서 mysql에서 데이터를 검색하고 배열에 할당하지만 뷰의 각 요소를 재사용 할 수 없습니다. 나는 다음과 같은 형식뷰에 사용할 배열 객체를 설정합니다.

Array ([0]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue)) 
    [1]=>Array([user]=>Array([something]=>somevalue [somethingelse]=>someotherValue)) 
    .......) 

가 데이터베이스에서 데이터를 쿼리 할 모델을 호출하고 내가 initilize 컨트롤러에서

은 $ 결과는 바로 패스로보기 배열을 다음과 같이 내 데이타베이스로부터 취득한 배열

$i=0; 
foreach($result as $row) 
{ 
    $exportDt[$i]['something']=$row['user'][something]; 
    $exportDt[$i]['somethingelse']=$row['user'][somethingelse]; 
} 

this->set($exportDt); 

뷰에서이 exportDt 배열을 어떻게 재사용 할 수 있습니까? 나는 설정이 하나의 dim 배열에만 허용된다고 생각하고있다. 그것은 당신이 나타납니다

답변

1

은 (즉, 뷰 컨트롤러에서 변수를 전달) 변수를 설정하기위한 올바른 구문을 사용해야합니다 :

//controller 
$this->set('exportDt', $exportDt); 

//view 
print_r($exportDt); 

$this->set()의 첫 번째 매개 변수는 변수의 이름입니다 보기에서 액세스 할 수 있어야합니다. 두 번째 변수는 해당 변수에 넣을 데이터입니다.

따라서, 예를 들어, 당신도 다른 이름을 사용할 수 있습니다 :

//controller 
$this->set('myVar', $exportDt); 

//view 
print_r($myVar); 

또 다른 일반적인 방법은 PHP의 compact을 사용하는 것입니다. 이 스트링 (들)의 이름의 변수 보이지만) 이름으로 배열 => 값

(컴팩트 생성 현재 심볼 테이블에 그 이름의 변수를 찾는다 변수 이름이 키가되고 변수 내용이 이되도록 출력 배열에 추가합니다. 즉, extract()의 반대입니다.

예 :

더 일반적
//controller 
$this->set(compact('exportDt'); 

//view 
$print_r($exportDt); 

, 그것은 여러 변수로 사용되는 :

//controller 
$var1 = 'whatever'; 
$myVar = 'something else'; 
$anotherVar = true; 
$this->set(compact('var1', 'myVar', 'anotherVar')); 

//view 
echo $var1. ' ' . $anotherVar . ' ' . $myVar; 
1

컨트롤러 부

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

보기 부분

,

.ctp 파일의 배열로 $ exportDt에 직접 액세스 할 수 있습니다.

감사합니다.

관련 문제