【问题标题】:cakephp find('list') for select boxcakephp find('list') 选择框
【发布时间】:2011-11-26 07:31:55
【问题描述】:

我正在尝试在我的站点中实现选择框。该选择框的选项设置在我的控制器中,如下所示

$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
)

但在选择框中只设置了最后一个值.... 我哪里做错了?

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案1】:

    这样的事情怎么样:

    <?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'
                            )
                        ));
    
        ?>
    

    一些旁注:

    • 为什么要再次查询用户数据?不是都在会话中吗?
    • 我不会在任何地方使用@,它更慢并且可以抑制错误。它也会让调试成为一场噩梦。

    【讨论】:

    • 我同意这种做法。我认为您上面的问题是您正在从foreach 循环的inside 查询$admin_userslist。这就是为什么您在列表中获得多个数组而不是一个数组的原因。
    【解决方案2】:

    我认为你错过了数组:

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

    希望对你有帮助

    【讨论】:

    • 是的,它可以工作,但它给了我一个复杂的数组,导致我在选择框中出现选项组,例如:第一个条目在选项组下...我想摆脱它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2011-08-06
    相关资源
    最近更新 更多