Laravel 表单验证:自定义验证规则
    		       		warning:
    		            这篇文章距离上次修改已过429天,其中的内容可能已经有所变动。
    		        
        		                
                
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,用于检查输入内容中是否含有不合适的字符。然后,我们在验证规则数组中使用这个新规则,并在验证失败时将用户重定向回表单页面,同时带上错误消息和用户输入的数据。
评论已关闭