最近在做一个项目,突然想到了一个error使用的问题,一起没有关注,一想还是有很多坑的,又把laravel中的相关源码读了一下,发现相关内容还挺多,又在stackoverflow上查了一下,终于解决了问题。下面先说一下两种返回$errors的方法。
两种方法都是在RegistersUsers文件中的register中更改
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {//这是默认的写法,验证失败返回错误信息
$this->throwValidationException(
$request, $validator
);
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
return redirect($this->redirectPath());
}
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) { //手动的添加错误
return redirect('/create')
->withErrors($validator)
->withInput();
}
Auth::guard($this->getGuard())->login($this->create($request->all()));
return redirect($this->redirectPath());
}
但是问题就是在laravel5.2中默认配置的$errors是不显示的,需要更改配置,下面给出解决方法。<p>
(1)首先用<code>Route::group(['middleware' =>['web'] ],function(){})</code>,包裹路由。
(2)第二步就涉及到好几种方法,具体如何移动,可以试一试,我也不直达用哪个。
<1>在kernel.php文件中把<code>\Illuminate\View\Middleware\ShareErrorsFromSession::class</code>移动到<code>protected $middleware</code>中。
<2>整体的把<code>protected $middlewareGroups</code>移动到<code>protected $middleware = []</code>中。
<3>把<code>\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,</code>移动到<code>protected $middleware = []</code>中。
下面是stackoverflow地址,可以看看。
网友评论