laravel 表单验证的问题
刚从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
但是第二种直接进入了表单的提交方法中,页面进行了跳转.
因为需要,自己重写了验证层,但并不想继承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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
还有一种@_@也可以实现第一种的。
会在app/Http/Requests 目录下生成一个 Request 需要将 authorize 方法中返回值默认的 false 改为 true 然后在 rules 方法中重写规则 messages 方法中重写 error 信息。
然后在控制器调用时 将默认注入的 Request 改成自己写的 Request 。