如何从一条记录中下载Yii2

时间:2018-06-08 15:47:36

标签: yii2

是否可以在一行表中的两列中输入Yii2,如下所示:

table content

我希望dropdown列表如下:

dropdown form

1 个答案:

答案 0 :(得分:3)

您尚未提供用于下拉列表的模型的任何详细信息,因此我将使用Phone模型演示示例,字段为idphone,{{ 1}},只是为了理解。

这是area_code表的数据:

phone

现在,如果您从数据库中选择一行并尝试列出+----+-------------+-----------+ | id | phone | area_code | +----+-------------+-----------+ | 1 | 03214442021 | 021 | | 2 | 03214452520 | 051 | +----+-------------+-----------+ 内单行中的所有columns,则可以使用drop-down过滤掉所有将array_filter放入数组中,然后将该数组分配给attributes选项。

虽然您可以使用相同的方法并在drop-down内使用array_filter,但如果从表中选择所有行,则差异将是下拉列表的布局。

选择单行时,您将获得如下所示的下拉列表:

enter image description here

如果您从表中选择所有行,则下拉列表将如下所示:

enter image description here

在您的控制器中,您可以执行以下操作:

单行

foreach

多行

public function actionPhone($id){
    $model = Phone::findOne($id);
    $rows = array_filter($model->attributes);
    return $this->render('drop-down', ['rows' => $rows]);
}

对于上述两种情况,视图部分保持不变,在您创建下拉列表的视图中,将行分配给选项。

您可以使用public function actionPhone(){ $phone = Phone::find()->all(); foreach ($phone as $model) { $rows[] = array_filter($model->attributes); } return $this->render('drop-down', ['rows' => $rows]); } yii\helpers\Html建立下拉列表。

ActiveForm

注意:下拉选项<?= yii\helpers\Html::dropDownList('my-options',null,$rows) ?> text的值,下拉选项column是列value。表示下拉列表name中的第一个选项['id'=>1]将是值,id将是为该选项显示的文字。

修改

如果您需要使用选项和文本的值,您可能需要使用\yii\helpers\ArrayHelper::map(),您可以将闭包传递给1$from表示匿名函数您可以将列值设为$tokey,如下所示:

value

因此,请将您的操作更改为以下内容:

Array(
    [1]=>1,
    [03214442021]=>03214442021 ,
    [021]=>021
)