Задать вопрос
@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Почему нет сообщений валидатора?

Добрый день. Вопросик такой есть. Решил переделать клиентскую валидацию в серверную

Есть форма
Форма
<div class="col-md-8">

                <?php if (Yii::$app->session->hasFlash('contactFormSub')): ?>

                    <div class="alert alert-success">
                        Ваше сообщение отправлено, в ближайшее время наши специалисты дадут Вам ответ на указнную вами электронную почту.
                    </div>
                <?php else: ?>
                <div class="contact-form">
                    <!-- contact form start -->
                    <?php $form = ActiveForm::begin(['id' => 'messages','options' => ['class' => 'row'], 'fieldConfig' => ['options' => ['tag' => false]]]); ?>
                        <!-- name -->
                        <div class="col-md-6">
                            <?= $form->field($model, 'nameU')->textInput(['autofocus' => true, 'class' =>'form-control main', 'placeholder' => 'Имя'])->label(false)?>
                        </div>
                        <!-- email -->
                        <div class="col-md-6">
                            <?= $form->field($model, 'emailU')->textInput(['class' =>'form-control main', 'placeholder' => 'Почта'])->label(false)?>

                        </div>
                        <!-- phone -->
                        <div class="col-md-12">
                            <?= $form->field($model, 'telephoneU')->textInput(['class' =>'form-control main', 'placeholder' => 'Телефон'])->label(false)?>
                        </div>
                        <!-- message -->
                        <div class="col-md-12">
                            <?= $form->field($model, 'textU')->textarea(['class' =>'form-control main', 'placeholder' => 'Текст сообщения', 'rows' =>15])->label(false)?>

                        </div>
                        <!-- submit button -->
                        <div class="col-md-12">
                            <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
                                'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
                            ]) ?>
                        </div>

                        <div class="col-md-12 text-center">
                            <?= Html::submitButton('Отправить', ['class' => 'btn btn-style-one', 'name' => 'contact-button']) ?>
                        </div>
                    <!-- contact form end -->
                    <?php ActiveForm::end(); ?>
                </div>

                <?php endif; ?>
            </div>


Контроллер
public function actionContacts()
    {
        $model = new Messages() ;
        if ($model->load(Yii::$app->request->post()) && $model->message())
        {
          Yii::$app->session->setFlash('contactFormSub');
          return $this->refresh();
        }


        return $this->render('contacts', ['model' => $model]);
    }


Ну и в модели Messages прописаны свои rules
public function rules()
    {
        return [
            [['nameU','emailU', 'telephoneU', 'textU'], 'required'],
            [['text','textU', 'answer'], 'string'],
            [['viewed', 'idmess'], 'integer'],
            [['date'], 'safe'],
            [['emailU'],'email',  'message' => 'Введите корректный Email-адрес без пробелов и ошибок'],
            [['name', 'email','nameU' , 'textmess' , 'clientmail' , 'namemess'], 'string', 'max' => 250],
            [['telephone','telephoneU'], 'string', 'max' => 100],
            ['verifyCode', 'captcha']

        ];
    }


+ В модели метод Message
public function Message()
    {
        if ($this->validate()) {
        $model = new Messages();
        $model->name = $this->nameU;
        $model->email = $this->emailU;
        $model->telephone = $this->telephoneU;
        $model->text = $this->textU;
        $model->save();
            return true;
        }
        return false;

    }


Валидация мысленно проходит, т е форма не сабмитится пока не будут выполнены все Rules. Но не выводятся ошибки валидации. Хотя в документации там под каждым окошком выводится ошибка. Что я делаю не так?
  • Вопрос задан
  • 39 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Причина в параметре 'fieldConfig' => ['options' => ['tag' => false]].
Уберите его и всё заработает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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