Laravel 表单验证:自定义验证规则
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
// 假设这是一个控制器方法,用于处理表单提交
public function store(Request $request)
{
// 定义验证规则
$rules = [
'title' => ['required', 'max:255'],
'body' => ['required'],
'publish_at' => ['required', 'date'],
// 自定义规则:确保提交的数据不包含非法字符
'content' => ['required', 'without_bad_words'],
];
// 自定义错误消息
$messages = [
'content.without_bad_words' => '提交的内容包含非法字符或不合适内容,请修改后再次尝试。',
];
// 自定义验证规则:无非法字符
Validator::extend('without_bad_words', function ($attribute, $value, $parameters, $validator) {
// 这里定义非法字符列表
$badWords = ['不良字符1', '不良字符2', '不良字符3'];
// 遍历列表检查是否含有非法字符
foreach ($badWords as $word) {
if (stripos($value, $word) !== false) {
return false;
}
}
return true;
});
// 实例化验证器
$validator = Validator::make($request->all(), $rules, $messages);
// 验证失败的响应
if ($validator->fails()) {
return redirect('form-url')
->withErrors($validator)
->withInput();
}
// 验证成功的处理逻辑...
}
这个例子中,我们定义了一个新的验证规则 without_bad_words
,用于检查输入内容中是否含有不合适的字符。然后,我们在验证规则数组中使用这个新规则,并在验证失败时将用户重定向回表单页面,同时带上错误消息和用户输入的数据。
评论已关闭