gpt4 book ai didi

Yii2 规则仅适用于使用场景

转载 作者:行者123 更新时间:2023-12-04 02:16:10 27 4
gpt4 key购买 nike

我在 Yii2 评论模型中写了两个场景,当用户登录或者是访客时。

我的规则是:

public function rules()
{
return [
[['user_id'], 'required', 'on' => self::SCENARIO_USER],
[['name', 'email'], 'required', 'on' => self::SCENARIO_GUEST],
[['post_id', 'body', 'date'], 'required'],
[['user_id', 'parent_id', 'post_id', 'status'], 'integer'],
[['body'], 'string'],
[['date'], 'safe'],
[['name', 'email', 'site'], 'string', 'max' => 256],
];
}

和 senarios 功能:

public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_GUEST] = ['name' , 'email'];
$scenarios[self::SCENARIO_USER] = ['user_id'];
return $scenarios;
}

我是这样使用的:

$commentModel = Yii::$app->user->isGuest ? new Comment(['scenario' => Comment::SCENARIO_GUEST]) : new Comment(['scenario' => Comment::SCENARIO_USER]);

如果 guest 查看表格,则仅检查姓名和电子邮件以及用户填写表格,不检查任何字段!为什么其他规则不检查?如何解决?

最佳答案

引用Yii2 Scenarios

scenarios() 方法返回一个数组,其键是场景名称,值是相应的事件属性。可以大量分配事件属性并接受验证。

public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_GUEST] = ['name' , 'email', 'date', 'body', 'site', 'post_id'];
$scenarios[self::SCENARIO_USER] = ['user_id', 'date', 'body', 'site', 'post_id'];
return $scenarios;
}

关于Yii2 规则仅适用于使用场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50717232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com