我正在尝试向我的请求验证器添加对一组字段的验证,以确保这组字段不会超过一定数量。一旦用户提交了他们的表单,他们就可以查看pdf格式的表单,我的目标是确保f_name、m_name和l_name的集合不会碰到pdf上的另一组文本(从而使其难以辨认)。
本质上,我想要这样的东西:
public function rules()
{
return [
'f_name' + 'm_name' + 'l_name' => 'max:50',
...
];
}我已经到处搜索了,但我能找到的唯一相关的问题就是如何进行验证。如果有人知道如何在验证中对值进行分组或链接到之前提出的问题,请让我知道。谢谢伙计们。
发布于 2016-05-06 21:56:35
Laravel不支持使用一个规则堆栈进行多字段验证。尝试编写自定义验证器或重新发明轮子:
public function rules()
{
$fields = [
"max: 50" => ["f_name", "m_name", "l_name"]
];
$rules = [];
foreach($fields as $rule => $fieldArray){
if(is_array($fieldArray)){
foreach($fieldArray as $field){
$rules[$field] = $rule;
}
}
}
return $rules;
}发布于 2016-05-06 22:04:21
您需要一个自定义验证器,以便可以添加多个字段。在您的AppServiceProvider中,如下所示:
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('groupedFieldsLongerThan50', function($attribute, $value, $parameters, $validator) {
$f_name = array_get($this->data, $parameters[0]);
$m_name = array_get($this->data, $parameters[1]);
$l_name = array_get($this->data, $parameters[2]);
if((strlen($f_name)+strlen($m_name)+strlen($l_name))<=50)
return true;
return false;
});
}
...在您声明规则的位置添加:
'f_name' => 'groupedFieldsLongerThan50:f_name,m_name,l_name'https://stackoverflow.com/questions/37073865
复制相似问题