Как отобразить значения в listBox () для множественного выбора с использованием Yii2

Я создаю блог, используя Yii2. У меня есть базовая структура БД с таблицами:
Сообщений
категории
Posts_Categories

Я использую Yii2 ActiveForm для создания формы создания поста. Есть поля ввода для Заголовок (текстовое поле), Контент (текстовая область), Категории (список для выбора нескольких категорий).

Я не могу заполнить listBox значениями БД.

<?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

В строке списка есть ошибка. Во-вторых, после заполнения данных в списке, как я могу обработать вставку данных в отношении записей и отношений нескольких категорий.

0

Решение

У вас есть синтаксическая ошибка в listBox. итак, завершаем круглые скобки ) до multiple имущество.

Как,

<?= $form->field($model, 'CategoryId')->listBox(\yii\helpers\ArrayHelper::map(\backend\models\Category::find()->all(),'CategoryId','CategoryName'),['multiple' => true]); ?>
1

Другие решения

Для второй части вашего вопроса о вставке данных. Вам может понадобиться просмотреть массив выбранных (опубликованных) элементов в списке. Вот пример, который может быть включен в 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();
}
}
1

По вопросам рекламы [email protected]