如何在yii2中创建一个下拉列表?

 LeonaL_1巛980 发布于 2023-01-29 12:33

如何使一个dropdownyii2使用activeform和模式?由于所有方法都已改变yii2,如何在新的方法中完成?

9 个回答
  • 看来你已经找到了你的答案,但是既然你提到了活动形式,我将再贡献一个,即使它只是微不足道.

    <?php
        $form = ActiveForm::begin();
    
        echo $form->field($model, 'attribute')
            ->dropDownList(
                $items,           // Flat array ('id'=>'label')
                ['prompt'=>'']    // options
            );
    
        ActiveForm::end();
    ?>
    

    2023-01-29 12:34 回答
  • 也许我错了,但我认为从查看SQL查询是个坏主意

    这是我的方式

    在控制器中

    $model = new SomeModel();
    $items=ArrayHelper::map(TableName::find()->all(),'id','name');
    
    
    return $this->render('view',['model'=>$model, 'items'=>$items])
    

    并在视图中

    <?= Html::activeDropDownList($model, 'item_id',$items) ?>
    

    或者使用ActiveForm

    <?php $form = ActiveForm::begin(); ?>
     <?= $form->field($model, 'item_id')->dropDownList($items) ?>
    <?php ActiveForm::end(); ?>
    

    2023-01-29 12:34 回答
  • 看看这个:

    use yii\helpers\ArrayHelper; // load classes
    use app\models\Course;
        .....
    $dataList=ArrayHelper::map(Course::find()->asArray()->all(), 'id', 'name');
    <?=$form->field($model, 'center_id')->dropDownList($dataList, 
             ['prompt'=>'-Choose a Course-']) ?>
    

    2023-01-29 12:34 回答
  • 看来这个问题有很多好的答案.所以我会尽量给出详细的答案

    活动表格和硬编码数据

    <?php
        echo $form->field($model, 'name')->dropDownList(['1' => 'Yes', '0' => 'No'],['prompt'=>'Select Option']);
    ?>
    

    要么

    <?php
        $a= ['1' => 'Yes', '0' => 'No'];
        echo $form->field($model, 'name')->dropDownList($a,['prompt'=>'Select Option']);
    ?>
    

    活动表单和数据库表中的数据

    我们将使用ArrayHelper,因此首先将它添加到名称空间中

    <?php
        use yii\helpers\ArrayHelper;
    ?>
    

    ArrayHelper有许多使用完整函数,可用于处理数组map()是我们将在这里使用的函数,这个函数有助于从多维数组或对象数组中制作一个(键 - 值对)映射.

    <?php
        echo $form->field($model, 'name')->dropDownList(ArrayHelper::map(User::find()->all(),'id','username'),['prompt'=>'Select User']);
    ?>
    

    不属于活动形式

    <?php
        echo Html::activeDropDownList($model, 'filed_name',['1' => 'Yes', '0' => 'No']) ;
    ?>
    

    要么

    <?php
        $a= ['1' => 'Yes', '0' => 'No'];
        echo Html::activeDropDownList($model, 'filed_name',$a) ;
    ?>
    

    不是活动表单而是db表中的数据

    <?php
        echo Html::activeDropDownList($model, 'filed_name',ArrayHelper::map(User::find()->all(),'id','username'),['prompt'=>'Select User']);
    ?>
    

    2023-01-29 12:34 回答
  • 上面有一些很好的解决方案,我的只是两个的组合(我来这里寻找解决方案).

    @Sarvar Nishonboyev的解决方案很好,因为它维护了表单输入标签和帮助块的错误消息的创建.

    我去了:

    <?php
    use yii\helpers\ArrayHelper;
    use app\models\Product;
    ?>
    <?=
    $form->field($model, 'parent_id')
         ->dropDownList(
                ArrayHelper::map(Product::find()->asArray()->all(), 'parent_id', 'name')
                )
    ?>
    

    再次,完全归功于:@Sarvar Nishonboyev和@ippi

    2023-01-29 12:34 回答
  • <?= $form->field($model, 'attribute_name')->dropDownList(
             ArrayHelper::map(Table_name::find()->all(),'id','field_name'),
            ['prompt' => 'Select']
    ) ?>
    

    这将帮助您...不要忘记在标题中使用类文件.

    2023-01-29 12:34 回答
  • 它像是

    <?php
    use yii\helpers\ArrayHelper;
    use backend\models\Standard;
    ?>
    
    <?= Html::activeDropDownList($model, 's_id',
          ArrayHelper::map(Standard::find()->all(), 's_id', 'name')) ?>
    

    Yii2中的ArrayHelper替换Yii 1.1中的CHtml列表数据.[请从控制器加载数组数据]

    编辑

    从控制器加载数据.

    调节器

    $items = ArrayHelper::map(Standard::find()->all(), 's_id', 'name');
    ...
    return $this->render('your_view',['model'=>$model, 'items'=>$items]);
    

    在视图中

    <?= Html::activeDropDownList($model, 's_id',$items) ?>
    

    2023-01-29 12:34 回答
  • 这是关于生成数据,因此从模型更适当地完成.想象一下,如果你想改变数据在下拉框中的显示方式,比如添加姓氏或其他东西.您必须找到每个下拉框并更改arrayHelper.我在模型中使用函数来返回下拉列表的数据,因此我不必在视图中重复代码.它还有一个优点,我可以在这里指定过滤器,并将它们应用于从该模型创建的每个下拉列表;

    /* Model Standard.php */
    
    public function getDropdown(){
          return ArrayHelper::map(self::find()->all(), 's_id', 'name'));
    }
    

    你可以在你的视图文件中使用它;

    echo $form->field($model, 'attribute')
            ->dropDownList(
                $model->dropDown
            );
    

    2023-01-29 12:35 回答
  • ActiveForm使用中:

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

    2023-01-29 12:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有