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

Forms CakePHP-输入选择不从变量中获取选择选项,forms,cakephp,select,input,cakephp-2.3,Forms,Cakephp,Select,Input,Cakephp 2.3,我正在用CakePHP 2.3.2开发一个应用程序,在表单上的输入选择方面遇到了一些问题。我正在控制器中创建一个数组,其中包含一个状态列表。在我看来,当我在输入的“选项”字段中使用这个变量时,我没有得到任何选择选项。如果我在视图中对变量进行打印,我会看到我认为应该看到的“选项”字段。我甚至尝试过复制这个打印输出并将其放入“选项”字段,然后输入选择就可以了 这是我的 内部控制器 $options = 'array(1 => \'NSW\',2 => \'ACT\',3 => \'

我正在用CakePHP 2.3.2开发一个应用程序,在表单上的输入选择方面遇到了一些问题。我正在控制器中创建一个数组,其中包含一个状态列表。在我看来,当我在输入的“选项”字段中使用这个变量时,我没有得到任何选择选项。如果我在视图中对变量进行打印,我会看到我认为应该看到的“选项”字段。我甚至尝试过复制这个打印输出并将其放入“选项”字段,然后输入选择就可以了

这是我的

内部控制器

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

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

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

问候


理查德

可能的问题:

数组不应像您所做的那样作为字符串:

$options = 'array(1 => \'NSW\',2 => \'ACT\',3 => \'NT\');
相反,只需创建一个数组:

$options = array(1 => 'NSW', 2 => 'ACT', 3 => 'NT');
其他注意事项:

  • 为什么将
    $options
    设置为
    $all\u states
    只是为了将其设置回原位
  • 全部缺少引号-确保如果开始引用,也要结束引用
  • 硬编码URL(如表单->创建)不是很好的做法

您可以像下面这样尝试:

echo $this->Form->input('field', array('type'=>'select','label' => false,
   'options' => $options,'default'=>'2'));
到正在生成的以下HTML:

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

选项二显示的是任何其他选项。

请确保提供的代码与您的代码完全一致。。。从StackOverflow颜色编码可以看出,到处都是引号缺失,不知道这是您的代码的问题,还是您的问题中的一个输入错误。谢谢@Dave,这就是选项数组的问题所在。在您的其他注释中,设置$options并将其设置回原来的值是一些早期代码的遗留问题。当然不应该这样做。谢谢你帮我找到遗漏的报价?我在哪里漏掉了“到处”的名言?我意识到对URL进行硬编码不是一个好的做法,但这是我将表单发布到我想要的地方的唯一方法。感谢您的帮助,RichardNot“was”-您仍然“are”在“ACT”和“url”之后到处缺少引用。也许这是唯一的2-不确定,但这足以导致您的颜色编码无法读取。
<option value="2" selected="selected">ACT</option>