Всем привет! У меня проблема, делаю форму в yii2 с выпадающими списками.Вот контроллер:
public function actionCreate($id = 0)
{
$model = new Product();
$id = (int)Yii::$app->request->post('id');
$products = [];
$categories = [];
$subcategories = [];
$catalog = Catalog::find()->all();
$categories = ArrayHelper::index (Catalog::find()
->where(['.parent_id' => "NULL"])
->all(), 'id');
if(array_key_exists($id, $categories))
{
$subcategories = ArrayHelper::index (Catalog::find()
->where(['.parent_id' => $id])
->all(), 'id');
}
if(array_key_exists($id, $subcategories))
{
$products = ArrayHelper::index (Catalog::find()
->where(['.parent_id' => $id])
->all(), 'id');
}
if ($model->load(Yii::$app->request->post()) && $model->save())
{
return $this->redirect(['index', 'id' => $model->id]);
}
return $this->render('index', [
'products' => $products,
'categories' => $categories,
'subcategories' => $subcategories,
'products' => $products,
'items' => $model,
'id' => $model->id,
'org' => Organization::getOrgListByUserId(Yii::$app->user->id)
]);
}
А это view
<?php $form = ActiveForm::begin(['options' => ['class' => 'products-edit-form']]); ?>
<div class="products-form">
<div class="inner-products-form">
<div class="products-toolbox clearfix">
<div class="products-icon">
<?=
Html::a(Html::tag('span', '', ['class' => 'glyphicon glyphicon-floppy-saved', ]), '', [
'title' => Yii::t('app','Save'),
'data' => [
'method' => 'post',
'params' => [
'action' => 'create'
]
],
]);
?>
<?=
Html::a(Html::tag('span', '', ['class' => 'glyphicon glyphicon-floppy-remove']), '/products/index?id=' . $model->id, [
'title' => Yii::t('app','Cancel'),
'data-pjax' => '1',
]);
?>
</div>
</div>
<div class="products-edit bg">
<div class="inner-products-edit bgcolor">
<?= $form->field($model, 'id')->hiddenInput()->label(false) ?>
<?= $form->field($model, 'art')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'shtrih')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'price')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'date')->textInput() ?>
<?= $form->field($model, 'group')->dropDownList(ArrayHelper::map($categories, 'id', 'name'),
[
'prompt' => 'Выбрать группу...',
'onchange' => '
$.post(
"'.Url::toRoute('/products/create').'",
{id : $(this).val()},
function(data){
$("select#podgroup").html(data).attr("disabled", false)})'
]) ?>
<?= $form->field($model, 'podgroup')->dropDownList(ArrayHelper::map($subcategories, 'id', 'name'),
[
'prompt' => 'Выбрать подгруппу...',
'onchange' => '
$.post(
"'.Url::toRoute('/products/create').'",
{id : $(this).val()},
function(data){
$("select#name").html(data).attr("disabled", false)})'
]) ?>
<?= $form->field($model, 'name')->dropDownList(ArrayHelper::map($products, 'id', 'name'),
[
'prompt' => 'Выбрать подгруппу...',
'id' => '$products',
'disabled' => $model->isNewRecord ? 'disabled' : false
]) ?>
<?= $form->field($model, 'size')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'podrobno')->textInput() ?>
<?= $form->field($model, 'add_pole')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'org_id')->label(Yii::t('app', 'Person'))->dropDownList($org, ['prompt' => Yii::t('app', 'Select Organization...')]) ?>
</div>
</div>
</div>
</div>
<?php ActiveForm::end(); ?>
У меня одна таблица в базе, с указанными собственными id и родительскими. Первый список (категории) работает, по выбору категории сразу перехожу в action контроллера, где создаётся массив $subcategories, он не пустой при прохождении в форму, но по завершении выполнения кода выпадающий список subcategories пуст. Подозреваю, что надо в форме что то менять, видимо при возврате из контроллера в форму требуется снова выбирать $categories в форме, поэтому subcategories пуст. Что не так делаю, подскажите пожалуйста