CakePHP найти ('список') для выбора окна - PullRequest
0 голосов
/ 26 ноября 2011

Я пытаюсь реализовать selectbox на моем сайте. Опция для этого selectbox установлена ​​в моем контроллере, как показано ниже

$tmp_user = $this->User->find('first',array('id'=>$this->Auth->user('id')));
                $zip_info = $this->Zipcode->find('first',array('id'=>@$tmp_user['User']['zip_id']));
                $region_admins = $this->AdminRegion->find('all',array('conditions'=>array('AdminRegion.region_id'=>@$zip_info['Zipcode']['region_id'])));

if(!empty($region_admins)){         
                    foreach($region_admins as $radmn):
                        //pr($radmn);
                        $admin_user = $this->User->find('list',array('conditions'=>array('id'=>$radmn['AdminRegion']['user_id']),'fields'=>array('id','username')));                
                        pr($admin_user);
                        $this->set('users',$admin_user);
                    endforeach;

Я получаю значение, подобное этому, когда я печатаю с контроллера

Array
(
    [137] => governmentuser1
)
Array
(
    [198] => testadmin
)
Array
(
    [215] => adminregion
)
Array
(
    [224] => testcompany1234
)
Array
(
    [225] => testuser12345678
)

но в поле выбора установлено только последнее значение .... Где я допустил ошибку?

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Как насчет этого:

<?php
    $tmp_user = $this->User->find('first', array(
                    'id' => $this->Auth->user('id')
                ));

    $zip_info = $this->Zipcode->find('first', array(
                    'id' => @$tmp_user['User']['zip_id']
                ));
    $region_admins = $this->AdminRegion->find('list', array(
                        'conditions' => array(
                            'AdminRegion.region_id' => @$zip_info['Zipcode']['region_id']
                        ),
                        'fields' => array('AdminRegion.user_id', 'AdminRegion.user_id')
                     ));

    $admin_users = $this->User->find('list', array(
                        'conditions' => array(
                            'id' => $region_admins
                        ),
                        'fields' => array(
                            'id','username'
                        )
                    ));

    ?>

Несколько замечаний:

  • Зачем нужен другой запрос данных пользователя?Разве это не все в сеансе?
  • Я бы нигде не использовал @, он медленнее и подавляет ошибки.Отладка тоже станет кошмаром.
0 голосов
/ 26 ноября 2011

Я думаю, вы пропустили массив:

$admin_user[] = $this->User->find('list',array('conditions'=>array('id'=>$radmn['AdminRegion']['user_id']),'fields'=>array('id','username')));                

Надеюсь, это поможет

...