我有一个两步验证表单,这意味着第一个用户输入得到验证(在 ValidateTicketData-Controller 中),如果一切正确,您将进入下一个表单页面,我通过
Route::post('/{locale?}/ticket/{cat?}', 'TicketController@store')->name('validation');
问题:在第二个页面上,用户需要上传文件,如果他不上传,则验证失败。
如果是这种情况,验证器类会立即重定向,这不起作用,因为它是后路由。
所以我创建了一个这样的获取路线:
Route::get('/{locale?}/ticket/{cat?}', 'TicketController@store')->name('validation');
并将其放入store-method 中:
$ticketData = $request->validated();
if ($request->isMethod('get')) {
$error = 'No pdf-file has been attached.';
return view ('/validation', compact('ticketData', 'cat', 'error'));
}
我把它放到store-method 中,因为如果用户不在第二页上附加文件,这是用户被重定向的地方。
但是,如果我现在尝试在不附加文件的情况下发送表单,则会收到I've redirected too many times.
我找不到如何使用第一页中经过验证的输入重定向到“验证”页面的解决方案(因为它会再次显示),因为 Validation 类会自动执行此操作。
编辑
我将获取路线更改为:
Route::get('/{locale?}/ticket/{cat?}', function() {
$error = 'no pdf tho.';
return view('/validation', compact('error'));
});
并在视图中显示 $error (如果它不为空)。这有效,但我仍然不知道如何从第一页获取输入数据。
我也有这个中间件 $locale
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
app()->setLocale($locale);
return $next($request);
}
这似乎不会让我有时重定向,我真的不明白
Cats萌萌
小怪兽爱吃肉