laravel - Laravel FormRequest 验证规则
问题描述
在我的 Laravel 应用程序中,当有人编辑他们的个人资料并等待管理员批准时,他们无法再次编辑个人资料。在编辑用户个人资料时,我需要在 FormRequest 中实现此规则。
我的User
模型hasMany
配置文件,但我只使用活动配置文件,
public function profile()
{
return $this->hasMany(Profile::class)->where('active', 1);
}
因此,当用户编辑配置文件时,我将插入到配置文件表中active = 0
,并更新我的用户表中的标志“ profile_review_pending = 1
”
现在我需要的是我需要在 FormRequest 中定义一些规则,比如 if profile_review_pending =1
then 不允许编辑。这可以使用存在或类似的东西来完成吗?
解决方案
您需要定义自定义验证规则、实现Illuminate\Contracts\Validation\Rule
接口或使用闭包。然后在验证器中直接使用自定义规则。
use Illuminate\Contracts\Validation\Rule;
class ReviewPendingValidationRule implements Rule
{
public function passes($attribute, $value)
{
return $value == 1;
}
public function message()
{
return ':Review is pending';
}
}
在您的控制器中
public function store()
{
$this->validate(request(), [
'profile_review_pending' => [new ReviewPendingValidationRule]
]);
}
推荐阅读
- java - 如何更改 javafx 图表的轴颜色?
- linux - Systemd 在启动时延迟日历事件的启动时间或等待其他服务
- c# - button_onclick() 在 .aspx 页面本身中生成
- html - 如何阻止对 API 生成的 URL 的抓取和索引?
- c# - 如何在外键列上更新和插入值?
- python - 使用 exec(open()) 将参数传递给 python 脚本
- python - 当我将local的值设置为大于1时,为什么pyspark会出现错误
- python-3.x - 为什么 asyncio call_later() 不能在 python 中工作?
- android - 将 Play Services 升级到 15.0.0 后出现 MergerException: Unable to merge dex while running
- oracle - 无法从 12c 中的 V$RMAN_BACKUP_JOB_DETAILS 取回任何行