2014-11-04 50 views
8

我已经在网上搜索了这个问题的解决方案。我已经知道Yii2下拉的方式是这样的:

<?php 
use yii\helpers\ArrayHelper; 
use backend\models\Standard; 
?> 

<?= Html::activeDropDownList($model, 's_id', 
     ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?> 

但我想使下拉没有$model ...有没有办法做到这一点?

预先感谢您!

回答

18

您还可以使用

Html::dropDownList()

<?= Html::dropDownList('s_id', null, 
     ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?> 

Yii Manual

+1

这不起作用,它会抛出错误:htmlspecialchars()期望参数1是字符串,给定数组是因为作为参数,我仍然必须传递:'Standard :: find() - > all()'which仍然是一个数组...我怎么能绕过这个? – 2014-11-04 12:43:13

+0

第一个参数是要分配给控件的名称,第二个值和第三个项目。 – Barry 2014-11-04 12:45:50

+1

谢谢,我错误地分配了我的参数!这已解决,并感谢您的快速响应。如果我遇到任何问题,我可以打扰你吗? P.S:我会在2分钟内接受答案...那是我达到标准时间的时候。 :D – 2014-11-04 12:48:47

2

您也可以使用此:

public function getAll() 
{ 
    $get = Standard::find()->all(); 
    $result = ArrayHelper::map($get, 'id', 'name'); 
    return $result; 
} 

然后下拉:

<?= Html::dropDownList(Standard::getAll(), ['prompt' => '--- select ---']) ?> 

这将解决您的错误。