带有输入和错误数据的Laravel 5.4 back()不能用于捕获所有路由

时间:2018-04-16 23:21:13

标签: laravel laravel-5 laravel-5.4

我在laravel中配置了一条catchall路线,如下所示:

    // catch all
    Route::get('{catchall}', [
        'uses' => 'MyGenericController@index'
    ])->where('catchall', '(.*)');

    Route::put('{catchall}', [
        'uses' => 'MyGenericController@update'
    ])->where('catchall', '(.*)');

在MyGenericController中,如果出现问题,我将重定向到update()动作。然后我在索引操作/方法中检查请求对象中的值,如下所示:

class MyGenericController extends MyBaseController {

  public function index($paramNameAtTheEndOfUrl) {
     // Check if any data exist in Request because of failure from update
    \Log::info( " data = " . print_r(request()->all(), true) );
  } // index

  public function update((Request $request) {

     try {
         ...
        // Do somethings
     } catch (\Exception $e) {
       return back()->withInput($request->all())->withErrors([$e->getMessage()]);
     }
  } // Update

}
  

现在我观察到的是索引方法没有收到   当我在更新中获得异常并且我重定向时请求对象数据   回来。

根据我的理解,如果我使用 withInput(request() - >在更新()方法/操作中进行 back()调用; all()) withError(...),我应该期待 index()操作中的旧值。

但我在index()方法中看到空请求(没有传回输入数据)。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

这是您输入旧内容的方式(->old()而不是->all()):

\Log::info( " data = " . print_r(request()->old(), true) );