如何在Yii2中从一条记录中进行下拉

如何在Yii2中从一条记录中进行下拉,yii2,Yii2,是否可以在Yii2中从一行两列表中进行下拉,如下所示: 我想要下拉列表如下: 您还没有提供下拉列表中使用的型号的任何详细信息,因此我将用电话型号演示该示例,字段为id,电话,地区代码,仅供理解 这是电话表的数据: +----+-------------+-----------+ | id | phone | area_code | +----+-------------+-----------+ | 1 | 03214442021 | 021 | | 2 | 032

是否可以在Yii2中从一行两列表中进行下拉,如下所示:

我想要
下拉列表
如下:


您还没有提供下拉列表中使用的型号的任何详细信息,因此我将用
电话
型号演示该示例,字段为
id
电话
地区代码
,仅供理解

这是
电话
表的数据:

+----+-------------+-----------+
| id | phone       | area_code |
+----+-------------+-----------+
|  1 | 03214442021 | 021       |
|  2 | 03214452520 | 051       |
+----+-------------+-----------+
现在,如果您要从数据库中选择一行,并尝试在
下拉列表中的单行中列出所有
,则可以使用
数组过滤器
将所有
属性
过滤到一个数组中,然后将该数组分配给
下拉列表
选项

虽然如果要从表中选择所有行,可以使用相同的方法并在
foreach
中使用
array\u filter
,但不同之处在于下拉列表的布局

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

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

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

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

public function actionPhone($id){
        $model = Phone::findOne($id);
        $rows=\yii\helpers\ArrayHelper::map(array_filter($model->attributes),function($item){
            return $item;
        },function($item){
            return $item;
        });
        return $this->render('drop-down', ['rows' => $rows]);
}
单列 对于多行 对于以上两种情况,视图部分保持不变,在您要创建下拉列表的视图中,将行指定给选项

您可以使用
yii\helpers\Html
ActiveForm
构建下拉列表

<?= yii\helpers\Html::dropDownList('my-options',null,$rows) ?>
因此,将您的操作更改为以下内容:

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

您尚未提供您在下拉列表中使用的型号的任何详细信息,因此我将用
电话
型号演示该示例,字段为
id
电话
区号
,仅供理解

这是
电话
表的数据:

+----+-------------+-----------+
| id | phone       | area_code |
+----+-------------+-----------+
|  1 | 03214442021 | 021       |
|  2 | 03214452520 | 051       |
+----+-------------+-----------+
现在,如果您要从数据库中选择一行,并尝试在
下拉列表中的单行中列出所有
,则可以使用
数组过滤器
将所有
属性
过滤到一个数组中,然后将该数组分配给
下拉列表
选项

虽然如果要从表中选择所有行,可以使用相同的方法并在
foreach
中使用
array\u filter
,但不同之处在于下拉列表的布局

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

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

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

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

public function actionPhone($id){
        $model = Phone::findOne($id);
        $rows=\yii\helpers\ArrayHelper::map(array_filter($model->attributes),function($item){
            return $item;
        },function($item){
            return $item;
        });
        return $this->render('drop-down', ['rows' => $rows]);
}
单列 对于多行 对于以上两种情况,视图部分保持不变,在您要创建下拉列表的视图中,将行指定给选项

您可以使用
yii\helpers\Html
ActiveForm
构建下拉列表

<?= yii\helpers\Html::dropDownList('my-options',null,$rows) ?>
因此,将您的操作更改为以下内容:

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

你能显示这个下拉列表的源数据吗?你是从数据库表中选择一行来创建下拉列表吗?@rob006,我只是在我的图像中创建下拉列表来简化我的问题,
Value\u column\u 1 Value\u column\u 2
@MuhammadOmerAslam,是的,请看下面的答案我发布了你能显示这个下拉列表的源数据吗?你是从数据库表中选择一行来创建下拉列表吗?@rob006,我只是在我的图像中创建下拉列表来简化我的问题,
Value\u column\u 1 Value\u column\u 2
@MuhammadOmerAslam,是的,请参阅下面的答案我发布了感谢您的回复,但是如果我想要,下拉选项值如何也是列的值?请参阅
Edit
part@eniac05谢谢您的回复,但是如果我想要下拉选项值如何也是列的值?请参阅
Edit
part@eniac05