yii 正在调用未知方法:前端\模型\联系人表单::保存()

1szpjjfi  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(127)
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();
}

我得到这个错误:
正在调用未知方法:前端\模型\联系人表单::保存()
var_dump工作正常。

保存方法返回此错误[save方法

.
这是完整的模型规则:rules model,这是模型代码的其余部分:有人能告诉我我哪里错了吗?

zphenhs4

zphenhs41#

正如 Sfili_81 已经 提到 的 , 你 必须 扩展 ActiveRecord 而 不是 Model 才 能 调用 save 方法 , 但是 只有 当 你 想 把 数据 保存 到 数据 库 时 , 这 才 有 意义 。
您 可以 使用 yii2 - app-basic 的 默认 逻辑 , 将 ContactForm 提交 的 数据 通过 email 发送 给 已 配置 的 管理 员 , 只需 调用 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();
}

中 的 每 一 个
如果 你 想 收到 真正 的 邮件 , 你 还 必须 将 邮件 程序 组件 的 useFileTransport 属性 设置 为 false ( 在 config/web.php 中 ) , 否则 每 封 邮件 都会 保存 到 runtime/mail 中 。

相关问题