我正在使用CakePHP 2.3.2开发一个应用程序,我在表单上输入选择时遇到了一些问题。我在我的Controller中创建了一个数组,其中包含一个状态列表。在我的视图中,我发现当我在输入的'options'字段中使用此变量时,我没有得到任何选择选项。如果我对变量执行print_r,在视图中,我会看到我认为应该在'options'字段中看到的内容。我甚至尝试复制这个print_r输出并将其放在'options'字段中,然后输入选择工作正常。
这就是我所拥有的
在控制器
中$options = 'array(1 => \'NSW\',2 => \'ACT\',3 => \'NT\');
$this->set('all_states, $options);
在视图中
<?php
$options = $all_states;
echo $this->Form->create('Refine', array('url => '/ServiceDirectoryResults/view/refine'));
echo $this->Form->input('field' ,array(
'type' => 'select',
'label' => false,
'options' => $options
));
echo $this->Form->end('Refine Search');
?>
当我运行时,我看到一个没有选择选项的选择
如果我在echo $ this-&gt; Form-&gt; end('Refine Search')之后添加print_r($ options);我明白了
array(1 => 'NSW',2 => 'ACT,3 => 'NT')
这是我所期望的,因为它是$ options变量的内容,它是从控制器传递的$ all_states变量。如果我从print_r获取此输出并在输入中替换$选项,则选择下拉工作正常并且我看到三个选项。出于某种原因,如果我对选择选项进行硬编码,我就无法解决选择工作正常的问题,但是如果我将包含数组的变量传递给输入选择,它将无法正常工作。
如果有人能告诉我这里我做错了什么,我真的很感激。
亲切的问候
理查德
答案 0 :(得分:2)
您可以尝试如下:
echo $this->Form->input('field', array('type'=>'select','label' => false,
'options' => $options,'default'=>'2'));
生成以下HTML:
<option value="2" selected="selected">ACT</option>
选项二显示任何其他选项。
答案 1 :(得分:0)
可能的问题:
不应将数组制作为字符串:
$options = 'array(1 => \'NSW\',2 => \'ACT\',3 => \'NT\');
相反,只需制作一个数组:
$options = array(1 => 'NSW', 2 => 'ACT', 3 => 'NT');
其他说明:
$options
设置为$all_states
才能将其设置回来?