调用未知方法:frontend \ models \ ContactForm :: save()

问题描述 投票:-1回答:1
 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

这是完整的模型规则:rules model这是模型代码的其余部分:rest of model有人可以告诉我我怎么了吗?

php yii yii2
1个回答
0
投票

如Sfili_81所述,您必须扩展ActiveRecord而不是Model才能调用save方法。但这仅在要将数据保存到数据库时才有意义。

您可以使用yii2-app-basic的默认逻辑,将通过ContactForm提交的数据通过电子邮件发送给已配置的管理员。为此,您只需要调用ContactForm的contact方法。

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

如果要接收真实的电子邮件,还必须将mailer组件的useFileTransport属性设置为false(在config / web.php中,否则每个邮件都将保存到运行时/邮件中。)>

© www.soinside.com 2019 - 2024. All rights reserved.