我在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()方法中看到空请求(没有传回输入数据)。
为什么会这样?
答案 0 :(得分:0)
这是您输入旧内容的方式(->old()
而不是->all()
):
\Log::info( " data = " . print_r(request()->old(), true) );