laravel - 如何在两个输入字段中只设置一个 NULLABLE
问题描述
我有两个输入字段,一个是 mobile_no,另一个是电子邮件,我想设置一个条件,如果没有给他们 email,则必须在两个字段中设置一个条件,反之亦然。
如何在 laravel 验证中设置可以为空的条件,即必须只需要两个字段中的一个。
解决方案
您可以创建自定义规则。所以你的需求与required_if
规则的相反,所以请试试这个,让我知道。
首先创建自定义规则,我称之为NullableIf
php artisan make:rule NullableIf
那么实现应该是这样的:
class NullableIf implements Rule
{
private $otherField;
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct( $otherField )
{
$this->otherField = $otherField;
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if($this->otherField === null)
{
return $value !== null;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The validation error message.';
}
}
要使用它,您可以:
$request->validate([
'field1' => [ new NullableIf(request('field2')) ],
'field2' => [ new NullableIf(request('field1')) ]
]);
我希望至少它能给你指明方向,除非这个确切的实现不适合你的需要。
推荐阅读
- r - R tibble:Col-1 与 Col2 为“ch2”的最后一行的差异
- c - 尝试编写一个程序来检查密码以查看它是否至少有 1 个大写和小写字母以及 1 个数字
- image - Flutter 如何共享 directory.path 图像
- python - 将来自 id groupby 的值分配给 pandas 数据帧的每个 id
- docker - 码头集装箱和“iptables -I FORWARD -j NFQUEUE”
- excel - 在没有打印区域的 excel 中查找分页符
- vhdl - 为什么我把它当作一个空的选择设计?
- sql-server - 无法从 RHEL SQL Server 连接到 Windows SQL Server 链接实例
- python - R - statsmodel - 'ARIMAResults' 对象没有属性“'endog'” - python
- testing - 选择器超时加速测试