【问题标题】:Yii2 save selected checkboxList items with active form and seach ModelYii2 保存选中的复选框列表项目与活动形式和搜索模型
【发布时间】:2023-03-10 04:08:01
【问题描述】:

我想在我的 Seachmodel 中实现一个 checkBoxList,但没有找到好的解决方案。我怎样才能做到这一点?在我的模型中,我有一个值数组:

型号:

const ART_BLACK = 10;
const ART_GREEN = 20;
const ART_ORANGE = 30;

public static function colorText() {
        return [
            self::ART_BLACK => 'Black',
            self::ART_GREEN => 'Green',
            self::ART_ORANGE => 'Orange',
        ];
    }

搜索视图(_search)

<?= $form->field($model, 'color[]')->checkboxList(Color::colorText()); ?>

执行搜索后,不再选择所有元素。我也可以将带有值的数组放在 SearchModel 中,但仍然不知道最好保存它们以在搜索后再次显示。

【问题讨论】:

    标签: yii2 checkboxlist


    【解决方案1】:

    我认为您只需要设置具有分离的可用选项和选定选项的搜索模型

    class ColorSearchForm extends Model
    {
        const ART_BLACK = 10;
        const ART_GREEN = 20;
        const ART_ORANGE = 30;
    
        public $available_colors = [
            self::ART_BLACK => 'Black',
            self::ART_GREEN => 'Green',
            self::ART_ORANGE => 'Orange',
        ];
    
        public $selected_colors = [];
    
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                ['selected_colors', 'safe'],
            ];
        }
    }
    

    在您的控制器中,您只需执行标准操作

    public function actionSearch()
    {
        $model = new ColorSearchForm();
    
        if ($model->load(Yii::$app->request->post())){
            // echo '<pre>';print_r($model); exit(); //uncomment to debug
            // do something to search
        }
    
        return $this->render('index', [
                'model' => $model,
        ]);
    }
    

    在视图中显示复选框:

    <div class="goods-form">
        <?php $form = ActiveForm::begin(); ?>
    
        <?= $form->field($model, 'selected_colors')->checkboxList($model->available_colors) ?>
    
        <div class="form-group">
            <?= Html::submitButton('Update', ['class' => 'btn btn-primary']) ?>
        </div>
    
        <?php ActiveForm::end(); ?>
    </div>
    

    【讨论】:

    • 谢谢,现在可以使用了。我发现了一个错误。在 $from-> 字段中,我使用了不起作用的“selected_colors []”。 'selected_colors' 有效。
    【解决方案2】:

    创建一个值数组

    $array = [10,20,30];
    $searchModel->color = $array; 
    

    在_search.php中

    <?= $form->field($model, 'color')->checkboxList(Color::colorText()); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多