CakePHP - 输入选择不从变量中选择选项

时间:2013-04-28 19:00:32

标签: forms cakephp select input cakephp-2.3

我正在使用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获取此输出并在输入中替换$选项,则选择下拉工作正常并且我看到三个选项。出于某种原因,如果我对选择选项进行硬编码,我就无法解决选择工作正常的问题,但是如果我将包含数组的变量传递给输入选择,它将无法正常工作。

如果有人能告诉我这里我做错了什么,我真的很感激。

亲切的问候

理查德

2 个答案:

答案 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才能将其设置回来?
  • 全部缺少报价 - 确保你是否开始报价,你也结束了它们
  • 不善于对您的网址进行硬编码的做法(例如在您的表单中&gt;创建)