Редактирование Nested Set - vorst.ru

Ввод рубрики


Редактирование, удаление узлов в дереве Nested Set

Пара замечаний по поводу того, как определить представление для редактирования Nested Set.

Ввод рубрики

Редактирование, удаление узлов в дереве Nested Set

Мы, в общих чертах, разобрались с деревьями Nested Set и создали модель для хранения дерева. В модели определили пару простых методов.

Теперь нужно разобраться с тем, как добавлять новые рубрики. Начнем с представлений.

Для добавления рубрики нужно определить, в какую родительскую рубрику будет входить новая рубрика. Этой цели служит поле $parent_node модели.

Посмотрим, как будет выглядеть добавление.


В представлении backend/views/rubric/_form.php вставим выпадающий список уже существующих рубрик.

<?= $form->field($model, 'parent_node')->dropdownList($model->items(), [
  'prompt' => \Yii::t('app', 'Select'),
  'disabled' => !$model->isNewRecord,
]); ?>

И поле для ввода названия рубрики.

<?= $form->field($model, 'name')
  ->textInput(['maxlength' => true])
?>

Представления create.php и update.php вполне обычные.

Для управления рубриками служит представление index.php текст которого приведен почти полностью.

<?= GridView::widget([
  'dataProvider' => $dataProvider,
  'layout' => "{items}\n{summary}\n{pager}",
  'columns' => [
    [
      'attribute' => 'name',
      'format' => 'html',
      'value' => function($data) {
        return $data->getPrettyName(true);
      }
    ],
    [
      'class' => 'yii\grid\ActionColumn',
      'template' => '{update}{delete}', 
      'options' => ['style' => 'width:60px;'],
    ],
  ],
]); ?>

Так как представление view.php не используется, мы отключаем его. Оставляем только возможность редактирования и удаления.

Усилий, как видно, не много и теперь можно переходить к контроллеру.

Заключение

Для добавления новой рубрики нужно определить родительскую рубрику. Это упрощенный подход, но его достаточно.

Оставьте комментарий

Только авторизованные посетители могут оставлять комментарии. Пожалуйста, войдите или пройдите регистрацию.