laravel - Laravel:条件验证规则
问题描述
在我的 laravel 应用程序中,我需要在条件基础上应用验证规则。例如:Store
methodpassword
字段是必填的,min chars: 6。但是Update
methodpassword
字段是不需要的,但是如果用户输入密码,那么它必须大于6 个字符。
SomeController.php
private function validations($customRules = [])
{
# variables
$rules = [
'contact_person' => 'required|min:2',
'mobile_number' => 'required|numeric',
'pword' => 'required|min:6',
'email' => 'required|email',
'address' => 'required',
'status' => 'required',
];
$messages = [
'contact_person.required' => '`<strong class="style-underline">Contact person</strong>` - Required',
'contact_person.min' => '`<strong class="style-underline">Contact person</strong>` - Must be at least :min chars',
'mobile_number.required' => '`<strong class="style-underline">Mobile number</strong>` - Required',
'mobile_number.numeric' => '`<strong class="style-underline">Mobile number</strong>` - Must be a numeric value',
'email.required' => '`<strong class="style-underline">Eamil</strong>` - Required',
'email.email' => '`<strong class="style-underline">Email</strong>` - Must be a valid email address',
'pword.required' => '`<strong class="style-underline">Password</strong>` - Required',
'pword.min' => '`<strong class="style-underline">Password</strong>` - Must have a at least :min characters',
'status.required' => '`<strong class="style-underline">Status</strong>` - Required',
];
if(!empty($customRules))
$rules = \array_merge($rules, $customRules);
# returning
return request()->validate($rules, $messages);
}
修改规则后,根据update
方法要求,对该pword
字段进行最小字符验证。由于该字段为空,因此不应发生这种情况。
目前我被迫这样做。
public function update()
{
...
# validating submitted data
if(!empty(request()->pword))
$this->validations([ 'pword' => 'min:6' ]);
else
$this->validations([ 'pword' => '' ]);
....
}
解决方案
您可以nullabe
改用required
,如果您使用 eloquent,则将空白值转换为 null,因为下面的中间件
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
所以你的方法就像
private function validations($request,$update = false){
$rules = [
'contact_person' => 'required|min:2',
'mobile_number' => 'required|numeric',
'pword' => 'nullable|min:6',
'email' => 'required|email',
'address' => 'required',
'status' => 'required',
];
}
推荐阅读
- python-3.x - 有什么方法可以在 Mac 上从 pyinstaller 运行我的 .exe 文件?
- typescript - 为什么 TS 在一元算术运算中不安全,但在二进制运算中不安全?
- django - 使用 Windows Server VM 将 Django 应用程序部署到 Azure
- amazon-web-services - 如何仅将私有 IP 分配给 EC2 实例?
- ios - 如何在 ForEach 中定位单个视图
- swift - swiftUI:检测嵌入在数组中的两个视图的交集并交换它们的位置
- android - 创建圆角和状态栏填充覆盖 Android 10
- javascript - React 和 PokéAPI:通过多个对象数组进行映射以获取神奇宝贝信息只给我一个神奇宝贝的信息
- c++ - 向双向迭代器提供 operator+ 或 operator- 有什么缺点吗?
- list - bat 文件,用于创建文件列表以及与 bat 文件位于同一目录中的路径