Yii 2 Динамическое число столбцов
Задача:
Разработать систему с динамическим числом столбцов
Этапы:
1. Создание модели, разработка подходов
2. Создание справочников
3. Создание админки
в заисимости от числа элементов в шаблоне отображаем разное число полей ввода
$mod = $model->getAll_elem($id);
if ($mod)
foreach ($mod as $key => $value)
{
if ($param[$value['id'] ]) $val = $param[$value['id']];
?>
<label class="control-label" for="username"><?= $value['name'] ?></label>
<?= Html::input('text', "elem[" . $value['id'] . "]", $val, ['class' => 'form-control']) ?>
<?php
}
затем сохраняем
if ($model->load(Yii::$app->request->post()) && $model->save())
{
$request = Yii::$app->request;
$array = $_POST['elem'];
foreach ($array as $key => $value)
{
if (!empty($value))
$all[] = [$model->id, $key, $value];
}
Yii::$app->db->createCommand()
->batchInsert('data', ['unit_id', 'element_id', 'value'], $all
)
->execute();
return $this->redirect(['view', 'id' => $model->id]);
}
в гриде
foreach ($mod as $key_ => $value_)
{
$arr_cols[] = [
'class' => 'yii\grid\DataColumn',
'header' => $value_['name'],
'value' => function($data) use ($value_) {
return $data->getAll_value()[$data->id][$value_['id']];
},
];
}
во вью
foreach ($mod as $key_ => $value_)
{
$arr_string[] = [
'label' => $value_['name'],
'value' => $model->getAll_value()[$model->id][$value_['id']],
];
}
смотрите на гитхабе
https://github.com/des1roer/yii2dinamic
Комментарии
Отправить комментарий