带有输入和错误数据的Laravel 5.4 back()不适用于捕获所有路由
我在laravel中配置了一条catchall路线,如下所示:带有输入和错误数据的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'
// 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获得输入\Log::info( " data = " . print_r(request()->old(), true) );