Всем привет!
Сразу к делу. Задача тривиальна до невозможности. Пишем форму фидбэка (в виде анкеты), писал их не раз и все было ок. Сама модель НЕ связана с БД, а сразу после валидации отправляет письмо на почту.
namespace frontend\models;
use yii\base\Model;
class QuestionaryForm extends Model
{
//.. для краткости пишу не все поля
public $organization;
public $position;
public $username;
public function scenarios()
{
//...тут все как обычно
}
//... тут правила валидации
public function rules(){}
}
Потом собственно форма, тоже ничего нового
<article>
<? $form = \yii\widgets\ActiveForm::begin() ?>
<?= $form->field($model, 'organization')?>
<?= $form->field($model, 'position')?>
<?= $form->field($model, 'username')?>
<?= \yii\helpers\Html::submitButton("Отправить", ['class' => 'btn btn-w-svg']) ?>
<? \yii\widgets\ActiveForm::end();?>
</article>
В контроллере тоже все стандартно
public function actionFeedback()
{
$model = new QuestionaryForm();
$model->scenario = 'default';
//... здесь действия после отправки формы
return $this->render('questionary', ['model' => $model]);
}
Самое интересное начинается на выходе. При открытии страницы с формой падает буквально все.
Конкретнее. Не подгружаются шаблоны, вообще никакие. Стили и скрипты тоже мимо. И дебагер YII тоже. В инспекторе гугла в теге head вообще ничего.
Ошибок никаких и весь вывод до старта ActiveForm присутствует на странице.
var_dump($model); - возвращает вполне себе живую модель QuestionaryForm с полями == NULL
Если оставить только это:
<article>
<? $form = \yii\widgets\ActiveForm::begin() ?>
<?= \yii\helpers\Html::submitButton("Отправить", ['class' => 'btn btn-w-svg']) ?>
<? \yii\widgets\ActiveForm::end();?>
</article>
То все сразу работает. Пробовал много чего, но голова уже не соображает. Есть ощущение, что проблема прямо под носом, а я ее не вижу. Буду благодарен, если ткнете пальцем)))
Будущим поколениям. Решил сам.
Ошибка была в rules(). Указал вместо валидатора "string", валидатор "text" (часто использовал его в предыдущем проекте и, видимо, привык). Поменял и все завелось.