laravel 表单验证的问题

发布于 2022-09-11 15:57:33 字数 1440 浏览 36 评论 0

刚从thinkphp5.1 转到laravel,做表单验证的时候,看文档有两种方式:

第一种是在控制器中直接用下面代码

$this->validte(request(),$rule)

第二种是

Validate::make(request()->all(),$rule);

但是两种有一点区别,第一种发现验证错误之后可以页面依然保留在提交页面,通过下面代码可以直接显示错误信息

@if(count($errors)>0)
    <div class="alert alert-danger" role="alert">
        @foreach($errors->all() as $error)
            <li>{{$error}}</li>
        @endforeach
    </div>
@endif

clipboard.png
但是第二种直接进入了表单的提交方法中,页面进行了跳转.

因为需要,自己重写了验证层,但并不想继承Controller类,用了如下方法处理验证:

class Validate
{
    protected $rule=[];
    protected $message=[];
    protected $sence=[];

    protected $input;
    private $validator;

   final public function check($input,$senceName=null){
       $this->input=$input;
       .....
       $this->validator=Validator::make($input,$rule,$message);
        /*验证失败处理,可以用异常处理*/
        if($this->validator->fails()){
            return back()->withErrors($this->validator)
                ->withInput();
        }
        return true;
    }

问题主要出在验证失败那块的代码,怎么样才能实现第一种验证的效果了,我的代码需要怎么修改.

还有一个问题,刚从tp框架转过来,以前找某个类中的方法,phpstorm中直接ctrl+左键一路就能找到.
但是在laravel中我老是找不到该方法,例如第一种controller基类中的valiate函数,怎么也找不到该函数的源码,laravel怎么快速找到相应的函数了.

请求各位赐教,不胜感激

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如歌彻婉言 2022-09-18 15:57:33

还有一种@_@也可以实现第一种的。

php artisan make:request TestRequest

会在app/Http/Requests 目录下生成一个 Request 需要将 authorize 方法中返回值默认的 false 改为 true 然后在 rules 方法中重写规则 messages 方法中重写 error 信息。

然后在控制器调用时 将默认注入的 Request 改成自己写的 Request 。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文