2013-04-28 87 views
2

我正在开发一个CakePHP 2.3.2的应用程序,我在输入选择表单时遇到了一些麻烦。我在我的Controller中创建一个数组,其中包含一个状态列表。在我看来,我发现,当我在输入的'选项'字段中使用这个变量时,我没有得到任何选择选项。如果我在变量上做一个print_r,在视图中,我确切地看到我认为我应该看到的'选项'字段。我甚至试图复制这个print_r的输出,并把它放在'选项'字段,然后输入选择正常工作。CakePHP - 输入选择不从变量中选择选项

这里是我有什么

在控制器

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

这是我所期待的,因为它是的$选项变量,它是$ all_states变量从控制器传递的内容。如果我从print_r中获取这个输出,并在输入中将它替换为$选项,那么选择下拉菜单可以正常工作,并且我看到了三个选项。出于某种原因,我不能解决选择工作正常,如果我硬编码的选择选项,但它不会工作,如果我传递一个变量包含数组到输入选择。

我真的很感激,如果有人能给我一个线索我在做什么错在这里。

亲切的问候

理查德

+0

请确保提供的代码完全反映了您的代码......即使您使用StackOverflow颜色编码也可以看到,整个过程中都缺少引号,并且不知道这是否是代码问题,或者你的问题只是一个错字。 – Dave 2013-04-28 19:39:55

回答

0

可能的问题:

数组不应该让像你字符串有:

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

相反,只要一个数组:

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

其他说明:

  • 你为什么要设置$options$all_states只设回来?
  • 缺失报价遍 - 确保如果你开始的报价,那你也结束他们
  • 不是好的做法进行硬编码您的网址(例如您的形式 - >创建)
+0

谢谢@Dave 这是选项数组的问题。 在您的其他说明 设置$ options并将其设置回来是一些早期的代码。当然不应该这样做。感谢您捡起 缺少引号?我在哪里错过了“全部”引号? 我意识到对URL进行硬编码并不是一个好习惯,但它是我能够将表单张贴到我想要的地方的唯一方法。 感谢您的帮助 理查德 – rickl 2013-04-28 19:53:23

+0

不是“是” - 你仍然“缺少”引用 - “ACT”和“url”之后的例子。也许这是唯一的2 - 不确定,但它足以导致您的颜色编码无法阅读。 – Dave 2013-04-29 06:32:30

2

,你可以尝试它象下面这样:所生成

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

以下HTML:

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

选项2中示出而不是其他任何一个。