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

带有输入和错误数据的Laravel 5.4 back()不适用于捕获所有路由,laravel,laravel-5,laravel-5.4,Laravel,Laravel 5,Laravel 5.4,我在laravel中配置了一条catchall路线,如下所示: // catch all Route::get('{catchall}', [ 'uses' => 'MyGenericController@index' ])->where('catchall', '(.*)'); Route::put('{catchall}', [ 'uses' => 'MyGenericController@update'

我在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

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

因此,根据我的理解,如果我使用with input(request()->all())withError(…)调用update()方法/操作,我应该在index()操作中使用旧值

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


为什么会发生这种情况?

这就是如何获取旧输入(
->old()
而不是
->all()
):


当您使用
back()->withInput()
时,您将使用
old()
helper获得输入request()->all()将返回GET参数。确定。那么,如何将请求数据从update方法(使用PUT)传递到index方法(使用GET)?我是否应该使用带有某种标志的会话存储来处理这种情况(我还必须在会话中存储旧的或原始的数据)?
\Log::info( " data = " . print_r(request()->old(), true) );