首页>>php >> 问题描述如何在Yii2中保存字段:解决方案的处理方法

问题描述如何在Yii2中保存字段:解决方案的处理方法

时间:2023-10-22 19:06:28 网络整理 点击:85

Yii2 save array of form fields to a single database field(Yii2 将表单字段数组保存到单个数据库字段)

  • 本文介绍了Yii2 将表单字段数组保存到单个数据库字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

    问题描述

    如何在 Yii2 中保存字段数组当前/默认设置仅适用于非数组字段.

    以下是我需要保存到单个字段中的表单字段:

    <头>
    添加
    Move一个输入字段field($model, 'field1ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('字段标签') ?>field($model, 'fieldofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Som 字段') ?>field($model, 'field3ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('字段标签') ?>field($model, 'field4ofarray[{{row-count-placeholder}}]')->dropDownList(['instock' => 'Instock', 'soldout' =>; '售罄', '预定' => '预定']);?>Remove

    当前控制器(我需要知道如何遍历数组并保存以及在表单中保存其他普通字段):

    公共函数actionCreate(){$model = new GrailWall();if ($model->load(Yii::$app->request->post()) && $model->save()) {返回 $this->redirect(['view', 'id' => $model->id]);} 别的 {返回 $this->render('create', ['模型' =>$模型,]);}}

    解决方案

    就我而言,我根本不需要对控制器进行任何更改.

    您可以在数据库记录中创建一个字段,例如config_json",然后在模型中使用 getter 和 setter 定义一个虚拟属性.

    公共函数getConfig(){返回 json_decode($this->config_json);}公共函数 setConfig($value){$this->config_json = json_encode($value);}

    还要在规则中将您的虚拟财产设置为安全,以便大规模分配工作.

    公共函数规则(){返回 [[['company_id', 'created_at', 'updated_at'], 'integer'],[['类'],'必需'],[['config_json'], 'string'],[['class'], 'string', 'max' =>255],[['配置'],'安全']];}

    现在您可以在视图中设置这样的输入

    field($model, 'config[ga_id]', ['labelOptions' => ['label' => 'Google Analytics Tracking ID']])->textInput(['maxlength' => true]) ?>

    How can I save an array of fields in Yii2 the current/default setup only works for field which aren't array.

    Below are the form fields I need to save into the single field:

    Add
    Move An Input Field field($model, 'field1ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Field Label') ?> field($model, 'fieldofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Som field') ?> field($model, 'field3ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Field Label') ?> field($model, 'field4ofarray[{{row-count-placeholder}}]')->dropDownList(['instock' => 'Instock', 'soldout' => 'Sold Out', 'scheduled' => 'Scheduled']); ?> Remove

    Current Controller (I need to know how I can loop through array and save as well as saving other normal fields in my form):

    public function actionCreate()
    {
        $model = new GrailWall();
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }
    

    解决方案

    In my case I didn't need to make any changes to the controller at all.

    You can just make a field in your db record, something like 'config_json` and then define a virtual property with getter and setter in your model.

    public function getConfig()
    {
        return json_decode($this->config_json);
    }
    public function setConfig($value)
    {
        $this->config_json = json_encode($value);
    }
    

    Also set your virtual property to be safe in the rules so Massive Assignment works.

    public function rules()
    {
        return [
            [['company_id', 'created_at', 'updated_at'], 'integer'],
            [['class'], 'required'],
            [['config_json'], 'string'],
            [['class'], 'string', 'max' => 255],
            [['config'], 'safe']
        ];
    }
    

    Now you can set inputs like this in your view

    field($model, 'config[ga_id]', ['labelOptions' => ['label' => 'Google Analytics Tracking ID']])->textInput(['maxlength' => true]) ?>
    

    这篇关于Yii2 将表单字段数组保存到单个数据库字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

    本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

    《问题描述如何在Yii2中保存字段:解决方案的处理方法》
    将本文的Word文档下载到电脑,方便收藏和打印
    推荐度:
    下载文档

    文档为doc格式