- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 unclead/yii2-multiple-input 小部件。
我想用我的数据库中的值生成不同数量的行。我该怎么做?
我可以在 View 中设计我的列,并在页面生成后手动编辑数据。但是想念如何在 View 中编程行数及其值。
我的代码在 View 中:
<?= $form->field($User, 'User')->widget(MultipleInput::className(), [
'min' => 0,
'max' => 4,
'columns' => [
[
'name' => 'name',
'title' => 'Name',
'type' => 'textInput',
'options' => [
'onchange' => $onchange,
],
],
[
'name' => 'birth',
'type' => \kartik\date\DatePicker::className(),
'title' => 'Birth',
'value' => function($data) {
return $data['day'];
},
'options' => [
'pluginOptions' => [
'format' => 'dd.mm.yyyy',
'todayHighlight' => true
]
]
],
]
])->label(false);
如何制作(例如)具有不同值的 8 行,并且还能够编辑/删除/更新其中的一些?
最佳答案
您需要查看文档,因为它说您需要在模型中分配一个单独的字段,该字段将以 JSON 的形式存储所有计划,然后在编辑/更新模型时将其提供回字段。
您还没有添加适当的模型来验证您是如何在上面给定的情况下创建字段 User
的。因此,我将尝试创建一个简单的示例来帮助您在您的场景中实现它。
例如。
您必须将用户连同他最喜欢的书一起存储在数据库中。
User
id, name, email
Books
id, name
User
表中创建一个名为 schedule
的文本类型的字段/列,您可以编写迁移或手动添加。将其添加到 User
模型的规则中作为 safe
。
像下面一样
public function rules() {
return [
....//other rules
[ [ 'schedule'] , 'safe' ]
];
}
将小部件添加到 ActiveForm
中新创建的列
看下面的代码
echo $form->field($model,'schedule')->widget(MultipleInput::class,[
'max' => 4,
'columns' => [
[
'name' => 'book_id',
'type' => 'dropDownList',
'title' => 'Book',
'items' => ArrayHelper::map( Books::find()->asArray()->all (),'id','name'),
],
]
]);
保存 User
模型时,将数组转换为 JSON 字符串。
喜欢下面
if( Yii::$app->request->isPost && $model->load(Yii::$app->request->post()) ){
$model->schedule = \yii\helpers\Json::encode($model->schedule);
$model->save();
}
覆盖 User
模型的 afterFind()
以在加载表单之前将 json 转换回数组。
喜欢下面
public function afterFind() {
parent::afterFind();
$this->schedule = \yii\helpers\Json::decode($this->schedule);
}
现在,当针对当前用户保存 schedule
字段时,将拥有书籍所选行的 JSON,选择的数量一样多,例如,如果我保存了三本具有 ids(1,2 ,3) 那么它将有如下所示的 json
{
"0": {
"book_id": "1"
},
"2": {
"book_id": "2"
},
"3": {
"book_id": "3"
}
}
上述 JSON 将在 afterFind()
中转换为数组,以便在您编辑记录时小部件加载保存的计划。
现在转到您的更新页面或编辑新保存的模型,您将看到自动加载的书籍。
关于php - 使用 unclead/yii2-multiple-input 的 Yii2 加载计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51847967/
我正在使用 unclead/yii2-multiple-input 小部件。 我想用我的数据库中的值生成不同数量的行。我该怎么做? 我可以在 View 中设计我的列,并在页面生成后手动编辑数据。但是想
我是一名优秀的程序员,十分优秀!