Yii2下拉列表不使用$model

10

我已在网上广泛搜索了解决此问题的方法。我已经知道Yii2下拉菜单的方式是这样的:

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

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

但是我想制作没有$model的下拉菜单...是否有任何方法可以实现?

提前感谢你!

2个回答

30

你也可以使用

Html::dropDownList()

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

请查看Yii手册


1
这个不起作用,它会抛出错误:htmlspecialchars()期望参数1为字符串,但实际传递的是数组,因为我仍然需要传递一个参数:Standard::find()->all(),它仍然是一个数组... 我该如何绕过这个问题? - Ares Draguna
1
谢谢,我的参数分配错误了!这个问题已经解决,感谢您的快速响应。如果我遇到更多问题,可以麻烦您吗?附言:我会在2分钟内接受答案...那时候我会达到标准时间。 :D - Ares Draguna
没问题,但我不能保证像这样快速回复。 - Barry
@AresDraguna 如果他不在身边,周围有很多人可以帮忙。 - Yang
1
这违反了MVC原则,因为它将代码放在视图中。 - Wade
显示剩余2条评论

5
你也可以使用以下方式:
public function getAll()
{
    $get = Standard::find()->all();
    $result = ArrayHelper::map($get, 'id', 'name');
    return $result;
}

接下来是下拉菜单:

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

这将解决您的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接