컨트롤러에 배열을 저장하고 CakePHP의보기 파일에 사용하는 방법

StackOverflow https://stackoverflow.com/questions/1410423

  •  05-07-2019
  •  | 
  •  

문제

사용자 컨트롤러에서 '양식'테이블을 쿼리하여 사용자가 생성 한 양식 수를 찾아 배열에 저장합니다. 그러나보기 파일에서 배열 변수를 사용하는 방법.

일반적으로 설정 함수를 사용하여 컨트롤러의 변수를 설정하고보기 파일에서 사용합니다. 그러나 컨트롤러에서 배열을 설정하는 방법은 무엇입니까? 컨트롤러에서 값을 얻습니다 (에코).

내 컨트롤러 코드는 다음과 같습니다.

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의 답변을 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top