2

我正在使用 CakePHP 2.3.2 开发一个应用程序,但在表单上的输入选择方面遇到了一些问题。我正在我的控制器中创建一个数组,其中包含一个状态列表。在我的视图中,我发现当我在输入的“选项”字段中使用此变量时,我没有得到任何选择选项。如果我对变量执行 print_r,在视图中,我会看到我认为应该在“选项”字段中看到的内容。我什至尝试复制此 print_r 输出并将其放在“选项”字段中,然后输入选择工作正常。

这是我所拥有的

在控制器中

$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->Form->end('Refine Search'); 之后添加 print_r($options); 我懂了

array(1 => 'NSW',2 => 'ACT,3 => 'NT')

这是我所期望的,因为它是 $options 变量的内容,它是从控制器传递的 $all_states 变量。如果我从 print_r 获取此输出并在输入中将 $option 替换为它,则选择下拉菜单可以正常工作,我会看到三个选项。出于某种原因,如果我对选择选项进行硬编码,我无法确定选择是否正常工作,但如果我将包含数组的变量传递给输入选择,它将无法正常工作。

如果有人能告诉我我在这里做错了什么,我将不胜感激。

亲切的问候

理查德

4

2 回答 2

2

您可以尝试如下:

echo $this->Form->input('field', array('type'=>'select','label' => false,
   'options' => $options,'default'=>'2'));

到正在生成的以下 HTML:

<option value="2" selected="selected">ACT</option>

显示选项二,而不是任何其他选项。

于 2013-04-29T04:25:05.327 回答
0

可能的问题:

数组不应该像你一样被制作成字符串:

$options = 'array(1 => \'NSW\',2 => \'ACT\',3 => \'NT\');

相反,只需创建一个数组:

$options = array(1 => 'NSW', 2 => 'ACT', 3 => 'NT');

其他注意事项:

  • 你为什么设置$options$all_states只设置它?
  • 到处都缺少引号 - 确保如果你开始引用,你也会结束它们
  • 硬编码你的 URL 不是好习惯(比如在你的 Form->create 中)
于 2013-04-28T19:41:01.597 回答