컨트롤러에 배열을 저장하고 CakePHP의보기 파일에 사용하는 방법
문제
사용자 컨트롤러에서 '양식'테이블을 쿼리하여 사용자가 생성 한 양식 수를 찾아 배열에 저장합니다. 그러나보기 파일에서 배열 변수를 사용하는 방법.
일반적으로 설정 함수를 사용하여 컨트롤러의 변수를 설정하고보기 파일에서 사용합니다. 그러나 컨트롤러에서 배열을 설정하는 방법은 무엇입니까? 컨트롤러에서 값을 얻습니다 (에코).
내 컨트롤러 코드는 다음과 같습니다.
function users(){
$this->set('users',$this->User->find('all'));
$users=$this->User->find('all');
foreach($users as $user):
$id=$user['User']['id'];
$userFormCount[$id]=$this->Form->find('count',array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
$userFormCount[$id]=$this->Form->find('count',array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
echo "users : ".$id." ".$userFormCount[$id];
endforeach;
}
내보기 파일 :
<?php foreach($users as $user):?>
<tr>
<td class="people_profile">
<a href="/users/angeline"><?php echo $user['User']['name'];?></a>
</td>
<td>
<?php
$id=$user['User']['id'];
echo $userFormCount[$id]." ";?>forms, //need the array value here.
0 reports,
0 badges
</td>
</tr>
<?php endforeach;?>
컨트롤러의 Varaible $ userformCount에 값을 저장 했으므로보기 파일에서 값이 얻지 못합니다. 그러나 배열 값을 설정하고 얻는 방법?
해결책
우선 기능 통화를 반복하지 않아야합니다.
기능의 처음 두 줄을 대체 할 수 있습니다.
$users=$this->User->find('all');
$this->set('users', $users);
다음으로 객체를 전달하기 전에 객체를 변경하고 해당 객체에 계산하는 속성을 추가 할 수 있습니다.
function users(){
$users=$this->User->find('all');
// notice the & here
foreach($users as & $user):
// you are repeating the same line here as well, that's not necessary
$user['User']['custom_field'] = $this->Form->find('count',
array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
endforeach;
$this->set('users', $users);
}
그런 다음 데이터베이스에서 얻는 다른 필드와 마찬가지로 시야에서 사용할 수 있습니다. 그것을 향상시키기 위해서도이 코드를 afterFind
당신의 콜백 User
모델, 적어도이 사용자 정의 값이 한 번 더 많이 사용되는 경우 모델.
다른 팁
당신은 이미 배열 값을 설정하는 방법을 알고 있습니다 :-)
이 코드에서는 배열 '사용자'를 설정합니다.
$this->set('users',$this->User->find('all'));
따라서 다른 배열에 대해서도 똑같이 할 수 있습니다.
$this->set('userFormCount',$userFormCount);
... 사용자 변수와 같은 방식으로 읽으십시오.
그러나 현재 코드를 더 좋게 만드는 방법을 설명하기 때문에 Rayell의 답변을 살펴보십시오.
제휴하지 않습니다 StackOverflow