php - 如何对具有相同名称 Laravel 的任何单个字段应用验证?
问题描述
我有一个包含多语言功能的项目。所以我正在创建一个包含多种语言的表单,如果用户需要,可以插入。但是验证应该像任何具有相同名称的字段包含值然后将其余字段保留为
形式
<form>
<input type="text" name="name[EN]" />
<input type="text" name="name[AR]" />
<input type="text" name="name[FR]" />
<input type="submit" value="submit" />
</form>
现在我想验证如果这些字段中的任何一个具有值然后提交表单否则抛出验证
所以我尝试了 Laravel required_if,但没有奏效。
public function rules()
{
return [
'name.*' => 'required_if:name,1',
];
}
那么如何在 laravel 中进行这样的验证
解决方案
我已经搜索过,但找不到这样做的内置方式。您可以使用创建自己的规则
php artisan make:rule NonEmptyFiltered
然后将规则定义为:
class NotEmptyFiltered implements Rule {
public function passes($attribute, $value) {
return !empty(array_filter($value));
}
public function message() {
return ':attribute must have at least one non-null element';
}
}
然后你可以这样做:
public function rules()
{
return [
'name' => [ new NonEmptyFiltered() ]
];
}
推荐阅读
- c# - SharpDocx - foreach 语句仅显示列表的最后一个元素
- eclipse - 无法使用代理为 Maven 项目重现 Eclipse 命令行
- c# - c# HTTP Post IHttpActionResult
- sql - SQL Server - 获取日历月份的开始和结束
- java - 系统运行多个小时后的 java.lang.NoSuchMethodError
- c# - 如何使我的 fluent API 表可公开访问?
- iframe - DocuSign 嵌入 url 未在 iFrame 中呈现
- java - 调用 String replace() 时出现 IndexOutOfBounds 异常
- java - 如何在给定时间的下一小时内获得随机时间?
- c++ - 在 C++ 中生成任意嵌套的向量