Php 如何从yii2-widget-select2获取数据
这是我第一次使用yii框架,并尝试在视图中使用kratik小部件。 在_form.php中Php 如何从yii2-widget-select2获取数据,php,yii2,jquery-select2,Php,Yii2,Jquery Select2,这是我第一次使用yii框架,并尝试在视图中使用kratik小部件。 在_form.php中 $data = [ "a" => "Apple", "b" => "Banana", "c" => "coconut", ]; $form->field($model, 'tag[]')->widget(Select2::classname(), [ 'data' => $data, 'options' => ['placehol
$data = [
"a" => "Apple",
"b" => "Banana",
"c" => "coconut",
];
$form->field($model, 'tag[]')->widget(Select2::classname(), [
'data' => $data,
'options' => ['placeholder' => 'choose category', 'multiple' => true],
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'maximumInputLength' => 10
],
])->label('Select Category'); ?>
我想从控制器获取所选数据。这是我的controller.php
public function actionCreate()
{
$model = new ChildData();
if ($model->load(Yii::$app->request->post())) {
$userId = Yii::$app->user->getId();
$model->user_id= $userId;
$model->fruit=json_encode($model->tag);
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
所以,在子表中,我将水果属性设置为varchar(255)。运行代码后,我从kartik小部件中选择了水果数据的所有标记,但它只在水果属性中保存“[]”
因此,我想知道如何从controller.php中的kartik select2获取数据?kartik select2返回什么类型的数据?以及如何将所选数据传递到view.php?请随时指导我如何使用kartik小部件。
多谢各位 我假设您在模型中为用于填充
Select2
的标记声明了一个自定义字段。因为您没有使用同一字段在这一行的actionCreate
中加载模型
$model->fruit=json_encode($model->tag);
要使用选择2
单模式或多模式,您不需要以数组的形式提供输入名称,即只需使用标记
$form->field($model, 'tag')
将“创建”操作更改为“以下”,以便获得验证错误(如果有)
public function actionCreate()
{
$model = new ChildData();
if ($model->load(Yii::$app->request->post())) {
$userId = Yii::$app->user->getId();
$model->user_id= $userId;
$model->fruit=json_encode($model->tag);
if($model->save()){
return $this->redirect(['view', 'id' => $model->id]);
}
}
return $this->render('create', [
'model' => $model,
]);
}
您也可以分享您的型号
代码。必须为标记定义规则,否则将不会填充该规则。如果不是数据库字段,则必须在模型i-e中定义自定义属性
public $tag;
为标记
属性添加规则。下面的例子
[['tag'], 'safe']
$model->load($data)
仅填充已定义规则的属性 我假设您在模型中为用于填充Select2
的标记声明了一个自定义字段。因为您没有使用同一字段在这一行的actionCreate
中加载模型
$model->fruit=json_encode($model->tag);
要使用选择2
单模式或多模式,您不需要以数组的形式提供输入名称,即只需使用标记
$form->field($model, 'tag')
将“创建”操作更改为“以下”,以便获得验证错误(如果有)
public function actionCreate()
{
$model = new ChildData();
if ($model->load(Yii::$app->request->post())) {
$userId = Yii::$app->user->getId();
$model->user_id= $userId;
$model->fruit=json_encode($model->tag);
if($model->save()){
return $this->redirect(['view', 'id' => $model->id]);
}
}
return $this->render('create', [
'model' => $model,
]);
}
您也可以分享您的型号
代码。必须为标记定义规则,否则将不会填充该规则。如果不是数据库字段,则必须在模型i-e中定义自定义属性
public $tag;
为标记
属性添加规则。下面的例子
[['tag'], 'safe']
$model->load($data)
仅填充已定义规则的属性 您可以转储Yii::$app->request->post()并检查是否提交了数据。如果有“标记”的数据,则检查是否在ChildData模型中有“标记”的规则?您可以转储Yii::$app->request->post(),并检查是否提交了数据。如果有“tag”的数据,那么检查是否在ChildData模型中有“tag”的规则?这是我的模型类,public$tag=[];公共函数规则(),'user_id'=>Yii::t('frontend/child_data','user id'),'fruit'=>Yii::t('frontend/child_data','fruit'),];}我已经更新了我的答案,如果它仍然不起作用,请告诉我。它起作用了!!!如上所述,我在模型中为$tag添加了规则。现在,select2中选定的数据保存在数据库中。非常感谢您的帮助@IrfanAshraf。这是我的模型类,public$tag=[];公共函数规则(),'user_id'=>Yii::t('frontend/child_data','user id'),'fruit'=>Yii::t('frontend/child_data','fruit'),];}我已经更新了我的答案,如果它仍然不起作用,请告诉我。它起作用了!!!如上所述,我在模型中为$tag添加了规则。现在,select2中选定的数据保存在数据库中。非常感谢您的帮助@IrfanAshraf。