2013-02-07 2 views
0

컨트롤러에서 테이블의 단일 레코드를 전달하지만보기가 전체 테이블을 표시하는 이상한 문제가 발생했습니다.CakePHP :보기가 컨트롤러와 동기화되지 않았습니다.

필자는 광범위한 로깅을 가지고 있으며 Controller가 $ this-> set()을 통해 단일 레코드를 전달하고 있음을 확신합니다.

컨트롤러 (ContactsController : show_list) 로그에

$arr_contacts = $this->Contact->find(
    'all', 
    array(
     'conditions' => array(
      'Contact.state_id' => $i_state_id, 
      'Contact.city'=> $str_city 
     ), 
     'fields' => array(
      'Contact.id', 
      'Contact.name', 
      'Contact.city' 
     ), 
     'recursive' => -1 
    ) 
); 

$contacts = $arr_contacts; 
$this->log ($contacts, 'debug'); 
$this->set('contacts', $this->paginate()); 
$this->log(__FUNCTION__." : ".__LINE__, 'debug'); 

출력 : 보기 파일에서

Debug: Array 
(
    [0] => Array 
     (
      [Contact] => Array 
       (
        [id] => 504 
        [name] => Michael 
        [city] => New York 
       ) 

     ) 

) 


Debug: show_list : 303 

(show_list.ctp), 내가

<div class="contacts index"> 

    <?php echo print_r($contacts);?> 

뷰 파일, 테이블의 모든 레코드의 목록을 인쇄합니다. cakephp가 표시하는 SQL 덤프는 추가 SQL 호출이 수행되고 있음을 보여줍니다. 그러나 이러한 호출이 어디에서 왔는지는 분명하지 않습니다.

나머지 컨트롤러와 동작은 손상된 문제를 배제하고 올바르게 작동하는 것 같습니다.

이전에 비슷한 상황이 발생 했나요? 어떤 포인터?

답변

2

paginate() 함수의 출력을 자신의 find() 호출과 다른보기로 전달합니다.

find()와 동일한 조건을 원한다면. (팁 : 배열에 먼저 조건을 입력하십시오.)

1

Db에서 한 줄의 항목 만 얻고 있기 때문에 Paginate가 필요하지 않은 것처럼 보이는 경우 다시 당신의 $this->set() 같은 : 일부 쿼리가 여러있을 수 있으므로,

$this->paginate = array(
    'conditions' => array(
     'Contact.state_id' => $i_state_id, 
     'Contact.city'=> $str_city 
    ), 
    'fields' => array(
     'Contact.id', 
     'Contact.name', 
     'Contact.city' 
    ), 
    'recursive' => -1 
); 

$this->log ($this->paginate, 'debug'); 
$this->set('contacts', $this->paginate()); 
$this->log(__FUNCTION__." : ".__LINE__, 'debug'); 
+0

내가 PAGINATE 필요 : 당신이 페이지를 매기는 필요한 경우

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

이 (???), 다음과 같은 당신에게 전체 기능을 설정해야 기록. 나는 $ this-> paginate를 사용하여 첫 번째 단계를 지나쳤다. 그러나 검색 결과의 두 번째 페이지 +는 유효한 데이터를 표시하지 않으며 정의되지 않은 변수, foreach() 등의 잘못된 인수와 관련된 오류/메시지를 표시합니다 ... 페이지 2, 3에 대한 쿼리 매개 변수를 사용할 수없는 것으로 보입니다 .... ** 쿼리 매개 변수를 후속 페이지로 보내려면 어떻게해야합니까? ** –

관련 문제