2015-04-05 108 views
0

我可以使用ArrayHelper :: map()在Yii2中創建基於模型的下拉列表。但我不確定在下拉列表中添加新選擇選項的過程。婁我已經加入我的代碼 -如何在基於Yii2的下拉列表中添加自定義選項?

$book_list = Books::find() 
      ->where(['Status' => 1]) 
      ->orderBy('BookName') 
      ->all(); 

$listBook=ArrayHelper::map($book_list,'BookName','BookName'); 

<?= $form->field($model, 'BookName')->dropDownList($listBook, [ 
'prompt' => 'Select'], 
['label'=>''] 
)?> 

而且它產生下拉列表像以下各項

<option value="">Select</option> 
<option value="Biology">Biology</option> 
<option value="Mathematics">Mathematics</option> 
<option value="Physics">Physics</option> 

我想添加一個新的名爲「其他」選項,在下拉列表的末尾。我使用的是BookName的順序,所以「OTHER」將不在排序中。它將始終顯示在下拉列表的底部/頂部。

<option value="">Select</option> 
<option value="Biology">Biology</option> 
<option value="Mathematics">Mathematics</option> 
<option value="Physics">Physics</option> 
<option value="Other">Other</option> 

我該如何做到這一點?

回答

0

請嘗試這樣,

$listBook=ArrayHelper::map($book_list,'BookName','BookName'); 
$listBook['Other'] = 'Other'; 
+0

它的工作原理或不? – 2015-04-05 11:57:31

+0

它沒有工作,但我已經管理,使用SQL查詢。我使用了以下查詢 - SELECT BookName FROM books ORDER BY BookName ='Other'ASC,BookName ASC; – 2015-04-10 12:30:42

+0

如果我使用上面的方法,那麼它不會在下拉列表末尾顯示值'Other'。它只是在最後顯示一個空的選項。 – 2015-04-15 07:29:02

0

對不起延遲,下面是正確答案。

$listBook=ArrayHelper::map($book_list,'BookName','BookName'); 
$listBookNew = array_merge($listBook, array('Other'=>'Other')); 
<?= $form->field($model, 'BookName')->dropDownList($listBookNew, [ 
'prompt' => 'Select'], 
['label'=>''] 
)?> 

讓我知道,如果它

相關問題