kimono
@kimono
Web developer

Как из анонимной функции вернуть форму ActiveForm в YII2?

При отрисовке GridView необходимо отобразить кнопку "update" вместе с модальным окном с ajax-формой редактирования.
Для отображения колонки использую такой код:
[
  'class'    => yii\grid\ActionColumn::className(),
  'template' => '{view} {update} {delete}',
  'buttons'  => [
    'update' => function ($url, $model, $key) {
        $html = [];
        $html[] = Modal::begin([
          'toggleButton' => ['label' => 'update', 'class' => 'btn btn-primary'],
        ]);
        $html[] = $form = ActiveForm::begin([
          'options'     => [
            'data-pjax' => true,
          ],
        ]);
        $html[] = $form->field($model, 'id')->textInput();
        // всякие поля формы
        $html[] = ActiveForm::end();
        $html[] = Modal::end();

        return implode("\n", $html);
    }
]

Возникает ошибка: PHP Fatal Error – yii\base\ErrorException - Object of class yii\bootstrap\ActiveForm could not be converted to string.
Как правильно вывести HTML код формы из функции?
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
bitver
@bitver
Я юзаю ob_start()...и т.д.
Простая реализация, но чуть-чуть не читабельно, поэтому такие блоки комментарияими обхвачиваю.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
EnChikiben
@EnChikiben
ActiveForm и Modal это наследники Widget, у которого есть метод render() который и возвращает html, я бы копал в это сторону
Ответ написан
Комментировать
@Mylistryx
$this->render()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы