2013-04-28 98 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中示出而不是其他任何一個。