Вызов неизвестного метода: frontend \ models \ ContactForm :: save () - PullRequest
0 голосов
/ 09 января 2020
 public function addContact()
{
    if (!$this->validate()) {
        return null;
    }

    $model = new ContactForm();

    foreach (['name', 'email', 'subject', 'body'] as $property) {
        $model->$property = $this->$property;
    }
    return $model->save();
}

Я получаю эту ошибку:

Вызов неизвестного метода: frontend \ models \ ContactForm :: save ()

var_dump работает правильно. vardump

метод сохранения возвращает эту ошибку [метод сохранения savemethod2.

Это полные правила модели: правила для модели и это остальная часть кода модели: остальная часть модели Может кто-нибудь сказать мне, что я ошибаюсь?

1 Ответ

0 голосов
/ 10 января 2020

Как уже упоминалось в Sfili_81, вы должны расширить ActiveRecord вместо Model, чтобы иметь возможность вызывать метод save. Но это имеет смысл, только если вы хотите сохранить данные в базе данных.

Вы можете использовать logi c по умолчанию для yii2-app-basi c, чтобы отправить данные, отправленные через ContactForm, в настроил админа по электронной почте. Для этого вам просто нужно вызвать метод контакта ContactForm.

// SiteController::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();
}

Если вы хотите получать реальные электронные письма, вы также должны установить для свойства useFileTransport компонента почтовой программы значение false (в config / web. php), в противном случае каждое письмо сохраняется в runtime / mail.

...