我正试图将验证添加到一组字段的请求验证器中,以确保该组字段不超过一定数量。一旦用户提交了他们的表格,他们就可以以pdf格式查看,我的目标是确保f_name
、m_name
和l_name
的集合不会遇到pdf上的另一组文本(从而使其难以辨认)。
本质上,我想要这样的东西:
public function rules()
{
return [
'f_name' + 'm_name' + 'l_name' => 'max:50',
...
];
}
我到处都找过了,但我能找到的唯一相关问题只是如何进行验证。如果有人知道如何将验证中的值分组或链接到以前提出的问题,请告诉我。谢谢各位。
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;
}
您需要一个自定义验证器,以便添加多个字段。在您的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'