我扩展了请求类来创建自己的验证规则。在该类中,我添加了自定义验证功能。在功能中,我检查标签是否通过了regEx,我想过滤标签以删除少于2个字符的标签。
,然后仅在请求中通过验证的标签。
tt <- df1[df1$proxy %in% v,]
tt <- tt[order(tt$orig, tt$dist),]
tt <- tt[!duplicated(tt$orig),c("orig", "proxy")]
tt$proxy[match(unique(df1$orig), tt$orig)]
#[1] 1 45 55
可以这样做吗?如何在Request类中设置它?
public function createPost(PostRequest $request)
{
dd($request->all()); //In this place I would like to keep only tags passed through validation not all tags recived in request
}
编辑:
我想我们想念我们。我想在验证之后只返回变量'tags' => [
'nullable',
'string',
function ($attribute, $value, $fail){
$tagsArray = explode(',', $value);
if(count($tagsArray) > 5) {
$fail(__('place.tags_max_limit'));
}
$tagsFiltered = [];
foreach ($tagsArray as $tag){
$tag = trim($tag);
if(preg_match('/^[a-zA-Z]+$/',$tag)){
$tagsFiltered[] = $tag;
};
}
return $tagsFiltered;
}
],
中返回的标签,而不是在输入中获得的标签。
答案 0 :(得分:0)
您必须创建此自定义正则表达式规则,并将其用于rules()
函数中。
像这样:
public function rules()
{
return [
'tag' => 'regex:/[^]{2,}/'
];
}
public function createPost(PostRequest $request)
{
$request->validated();
}
然后只需通过validated()
函数在任意位置调用它即可。
答案 1 :(得分:-1)
首先使用以下命令定义验证规则:
php artisan make:rule TagsFilter
导航到TagsFilter规则文件并在passs方法中定义过滤器:
public function passes($attribute, $value)
{
$tagsArray = explode(',', $value);
$tagsFiltered = [];
foreach ($tagsArray as $tag){
$tag = trim($tag);
if(preg_match('/^[a-zA-Z]+$/',$tag)){
$tagsFiltered[] = $tag;
};
}
return count($tagsArray) > 5 && count($tagsFiltered) > 0;
}
然后将您的规则包括在控制器上的验证中
$request->validate([
'tags' => ['required', new TagsFilter],
]);