Laravel 5.2:重定向错误无法正常工作

时间:2016-03-15 13:43:43

标签: laravel laravel-5.2

我目前正在努力应对Laravel问题,我无法解决自己。如果我使用withErrors()传递错误,则错误不会传递给Error Bag($ errors)。

我的控制器(FormController):

public function contact(Request $request) {

        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|email',
            'message' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect()->back()->withErrors($validator)->withInput($request->all());
        }

        return redirect()->back();
    }

问题是,withInput()也不起作用。问题可能来自哪里?感谢您的帮助!

(部分)已定义的routes.php:

Route::group(['middleware' => 'web'], function(){
    Route::post('/contact', 'FormController@contact');
});

会话配置

return [
    'driver' => env('SESSION_DRIVER', 'memcached'),
    'lifetime' => 120,
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => null,
    'table' => 'sessions',
    'lottery' => [2, 100],
    'cookie' => 'session',
    'path' => '/',
    'domain' => null,
    'secure' => false,

];

3 个答案:

答案 0 :(得分:0)

在Laravel 5.2中,您需要使用路由中的web中间件将错误传递给视图。

Route::group(['middleware' => ['web']], function () {
    Route::get('/', function() {
        return view('welcome');
    });
});

答案 1 :(得分:0)

不要将任何内容传递给withInput

 if ($validator->fails()) {
      return redirect()->back()->withErrors($validator)->withInput();
 }

并使用旧函数获取闪存数据

$name = $request->old('name');

{{old('name')}}

希望有所帮助

答案 2 :(得分:0)

如果您重定向到的控制器也使用withErrors()函数,则redirect()->back()->withErrors($validator)中的错误消息将被覆盖。

但是,旧邮件仍在会话中。因此,您仍然可以使用session('errors')阅读和显示它们:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul class="my-0">
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@elseif (null !== session('errors') && session('errors')->any())
    <div class="alert alert-danger">
        <ul class="my-0">
            @foreach (session('errors')->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif