Использую yii2. После создания обратной формы на сайте выходит ошибка:
Call to a member function isAttributeRequired() on null
1. in C:\Users\acer\OSPanel\domains\medicalyii2\vendor\yiisoft\yii2\widgets\ActiveField.php at line 915
/**
* Adds aria attributes to the input options.
* @param $options array input options
* @since 2.0.11
*/
protected function addAriaAttributes(&$options)
{
if ($this->addAriaAttributes) {
if (!isset($options['aria-required']) && $this->model->isAttributeRequired($this->attribute)) {
$options['aria-required'] = 'true';
}
if (!isset($options['aria-invalid'])) {
if ($this->model->hasErrors($this->attribute)) {
$options['aria-invalid'] = 'true';
}
}
}
}
2. yii\base\ErrorHandler::handleFatalError()
Уточняю, что я использую две формы из одной модели..Первая форма работает, а вот со второй произошла проблемка.. Помогите пожалуйста её устранить...
Вот моя форма:
<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?>
<p class="success" id="success" style="display:none;"></p>
Спасибо за обращение к нам. Мы постараемся ответить вам как можно скорее
</p>
<?php else: ?>
<?php $form = ActiveForm::begin(['id' => 'contact_form']); ?>
<div class="col-md-4"><?= $form->field($model, 'name', ['inputOptions' => ['class' => 'input', 'id' => 'contact_name']])->textInput(['placeholder' => "Your full name"])->label(false); ?></div>
<div class="col-md-4"><?= $form->field($model, 'email', ['inputOptions' => ['class' => 'input', 'id' => 'contact_email']])->textInput(['placeholder' => "E-mail Address"])->label(false); ?></div>
<div class="col-md-4"><?= $form->field($model, 'subject', ['inputOptions' => ['class' => 'input', 'id' => 'contact_subject']])->textInput(['placeholder' => "Subject"])->label(false); ?></div>
<div class="col-md-12"><?= $form->field($model, 'body', ['inputOptions' => ['class' => 'required valid', 'id' => 'message']])->textarea(['rows' => 6])->label(false); ?></div>
<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="form-group">
<input name=" " type="submit" value="submit">
</div>
<?php ActiveForm::end(); ?>
<?php endif; ?>
Модель:
public function contact($email)
{
$content = "<p>Email: " . $this->email . "</p>";
$content .= "<p>Name: " . $this->name . "</p>";
$content .= "<p>Subject: " . $this->subject . "</p>";
$content .= "<p>Body: " . $this->body . "</p>";
if ($this->validate()) {
Yii::$app->mailer->compose("@app/mail/layouts/html", ["content" => $content])
//->setTo($email)
->setTo('swallowsveta97@yandex.ru')
->setFrom([\Yii::$app->params['supportEmail'] => $this->name])
//->setFrom([$this->email => $this->name])
//->setFrom('swallowsveta97@yandex.ru')
//->setFrom([\Yii::$app->params['supportEmail'] => $this->name])
->setSubject($this->subject)
->setTextBody($this->body)
->send();
return true;
}
return false;
}
Контроллер:
/**
* Displays contact page.
*
* @return Response|string
*/
public function actionContact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->contact(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('contactFormSubmitted');
return $this->refresh();
} else {
return $this->render('contact', [
'model' => $model,
]);
}
}