Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp$this->;请求->;数据返回select字段的id,而不是select字段中需要并显示的值_Php_List_Cakephp_View_Controller - Fatal编程技术网

Cakephp$this->;请求->;数据返回select字段的id,而不是select字段中需要并显示的值

Cakephp$this->;请求->;数据返回select字段的id,而不是select字段中需要并显示的值,php,list,cakephp,view,controller,Php,List,Cakephp,View,Controller,我有一个CakePHP控制器,如下所示: $this->loadModel('Project'); $list2 = $this->Project->find( 'list', array( 'fields' => array('Project.project'), 'conditions' => array('Project.user_id' => $userId) )); $this->set($list2, 'li

我有一个CakePHP控制器,如下所示:

$this->loadModel('Project');

$list2 = $this->Project->find( 'list', array(
    'fields'     => array('Project.project'),
    'conditions'    => array('Project.user_id' => $userId)
));

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

$this->loadModel('Distance');

if(!empty($this->request->data)){    
    $this->Distance->create();
    if ($this->Distance->save($this->request->data)) {
        $this->Session->setFlash('Saved.');
        //  $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash('FAILED');
    }
}else{
    //  $this->Session->setFlash('test');
}
echo $this->Form->input('Distance.project', array('options' => $list2, 'label' => false, 'empty' => '(choose one)'  ;
还有这样一种观点:

$this->loadModel('Project');

$list2 = $this->Project->find( 'list', array(
    'fields'     => array('Project.project'),
    'conditions'    => array('Project.user_id' => $userId)
));

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

$this->loadModel('Distance');

if(!empty($this->request->data)){    
    $this->Distance->create();
    if ($this->Distance->save($this->request->data)) {
        $this->Session->setFlash('Saved.');
        //  $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash('FAILED');
    }
}else{
    //  $this->Session->setFlash('test');
}
echo $this->Form->input('Distance.project', array('options' => $list2, 'label' => false, 'empty' => '(choose one)'  ;
但我会将项目id而不是项目名称插入数据库。 我在处理字段时从来没有遇到过这样的问题——只是处理一个数据列表

知道为什么会这样吗

 $list2 = $this->Project->find( 'list', array(

                    'fields'     => array('Project.project'),
                     'conditions'    => array('Project.user_id' => $userId)
                 )

         );
这是因为$list2自动创建一个ID=>project的列表;当您将其用作表单的输入时,它会自动创建下拉列表以反映这一点。这通常是链接到ID而不是描述的最佳实践,因为ID不会经常更改。不过,下面的内容应该会让您完全得到您想要的:

 $list2 = $this->Project->find( 'list', array(

                    'fields'     => array('Project.project','Project.project'),
                     'conditions'    => array('Project.user_id' => $userId)
                 )

         );

这很正常。。。它的$list2和数组。。。选项的值是该数组中的索引

如果只想插入项目名称,则需要将$list2更改为$list2['project_name']。您需要删除或替换$list2的索引


乐:以爱夏克为例。他还为你更改了密码。

谢谢,如果我有足够的声誉,我会投票支持你们两人的答案!!!:)