如何使用 Yii2 在 listBox() 中显示值以进行多项选择
How to display values in listBox() for multiple selection using Yii2
我正在使用 Yii2 创建博客。我有包含表的基本数据库结构:
帖子
类别
Posts_Categories
我正在使用 Yii2 ActiveForm 创建 post 创建表单。有Title(文本域)、Content(文本域)、Categories(多类别选择的列表框)输入域。
我无法用数据库值填充列表框。
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'Title')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'Content')->textarea(['rows' => 6]) ?>
<?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName',['multiple' => true])); ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
它抛出以下错误:
Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: backend\models\Category::1
列表框行有错误。其次,在列表框中填充数据后,如何处理关于 posts 和多类别关系的数据插入。
您在列表框中有语法错误。所以,在 multiple
属性.
之前完成结束括号 )
喜欢,
<?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName'),['multiple' => true]); ?>
关于数据插入问题的第二部分。您可能需要遍历列表框中选定(发布)项目的数组。这是一个可能包含在控制器文件的 actionCreate()
或 actionUpdate()
函数中的示例(我假设 PostController.php
):
$selectedList = $_POST['model_name']['CategoryId'];
if(isset($selectedList)) {
foreach($selectedList as $value){
$pcmodel = new Post_Categories(); //assumption on model name
//do neccessary check here
$pcmodel->post_id = $postmodel->id;
//assumption that value is being stored
$pcmodel->category_id = $value;
$pcmodel->save();
}
}
我正在使用 Yii2 创建博客。我有包含表的基本数据库结构: 帖子 类别 Posts_Categories
我正在使用 Yii2 ActiveForm 创建 post 创建表单。有Title(文本域)、Content(文本域)、Categories(多类别选择的列表框)输入域。
我无法用数据库值填充列表框。
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'Title')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'Content')->textarea(['rows' => 6]) ?>
<?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName',['multiple' => true])); ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
它抛出以下错误:
Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: backend\models\Category::1
列表框行有错误。其次,在列表框中填充数据后,如何处理关于 posts 和多类别关系的数据插入。
您在列表框中有语法错误。所以,在 multiple
属性.
)
喜欢,
<?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName'),['multiple' => true]); ?>
关于数据插入问题的第二部分。您可能需要遍历列表框中选定(发布)项目的数组。这是一个可能包含在控制器文件的 actionCreate()
或 actionUpdate()
函数中的示例(我假设 PostController.php
):
$selectedList = $_POST['model_name']['CategoryId'];
if(isset($selectedList)) {
foreach($selectedList as $value){
$pcmodel = new Post_Categories(); //assumption on model name
//do neccessary check here
$pcmodel->post_id = $postmodel->id;
//assumption that value is being stored
$pcmodel->category_id = $value;
$pcmodel->save();
}
}