ActiveForm без модели yii2

Я хочу создать ActiveForm без модели на всякий случай. Я пробовал с dynamicModel, но получил ошибку:

use yii\base\DynamicModel;
$model = DynamicModel::validateData(compact('KOMENTAR'), [
   [['KOMENTAR'], 'string', 'max' => 128],
]);

Это форма, которую я хочу создать

<br>
<?php $form = ActiveForm::begin([
    'method' => 'post',
]); ?>

<?= $form->field($model, 'KOMENTAR')->textarea(['rows' => 6])->label(false) ?>

<div class="form-group">
    <?= Html::submitButton('POST', ['class' => 'btn btn-primary']) ?>
</div>

Это ошибка

Getting unknown property: yii\base\DynamicModel::KOMENTAR

person Noobs To be Pro Addict    schedule 03.09.2015    source источник
comment
вы определяете публичный $KOMENTAR на странице вашей модели   -  person vishuB    schedule 03.09.2015


Ответы (2)


Поскольку вы используете compact('KOMENTAR'), у вас должна быть переменная $KOMENTAR.

Узнайте больше о compact: http://php.net/manual/fr/function.compact.php

Или вы должны просто создать свою модель следующим образом:

$model = new \yii\base\DynamicModel(['KOMENTAR']);
$model->addRule(['KOMENTAR'], 'string', ['max' => 128]);
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // do what you want 
}
person soju    schedule 03.09.2015

Обычно для работы с моделью используются активныеэлементы, но в Yii2 есть вспомогательный класс Html для использования тех же элементов, что и в классическом HTML.

Используйте метод beginForm() из Html . И попробуйте что-то вроде этого:

use yii\helpers\Html;

<?= Html::beginForm(['/controller/view', 'id' => $model->id], 'POST'); ?>
<?= Html::textarea('KOMENTAR', '', ['rows' => 6])->label(false); ?>
<div class="form-group">
    <?= Html::submitButton('POST', ['class' => 'btn btn-primary']); ?>
</div>
<?= Html::endForm(); ?>

Подробнее об этом помощнике можно прочитать в документации.

person Sageth    schedule 03.09.2015
comment
Не используйте BaseHtml. Вместо этого используйте yii\helpers\Html. - person Tony; 03.09.2015
comment
Вы ошибаетесь в том, что у HTML больше инструментов для дизайна представления, вы должны прочитать этот yiiframework.com/doc-2.0/ - person soju; 03.09.2015
comment
Вы должны проверить свой код, в нем есть некоторые синтаксические ошибки, например, в beginForm()([ 'method' => 'post', ]) и (['rows' => 6, name='KOMENTAR']) - person bnu; 02.03.2016