【发布时间】:2019-09-15 16:08:08
【问题描述】:
我在提交表单时无法在 url 中获取正确的语言参数。
我的应用程序有两个可能的语言参数:de 和 en。
我用这个函数制作了一个名为 setLocale.php 的中间件:
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
app()->setLocale($locale);
return $next($request);
}
这是 web.php 中的路由:
Route::post('/{locale?}/ticket', 'TicketController@store')->name('validation');
这是表单操作:
<form method="post" action="{{ route('validation') }}">
当我想提交表单并验证输入时,您应该到达我在上面向您展示的路线。
但网址只会是:/ticket 而不是 en/ticket 或 de/ticket。
顺便说一句,您通过链接进入表单站点,因此语言参数是静态的,如下所示:
Route::get('/en/index/{param1?}/{param2?}', 'TicketController@index')->name('index');
Route::get('/de/index/{param1?}/{param2?}', 'TicketController@index')->name('index');
如何从验证页面的 url 中的表单页面 ('/en/index/[..]') 获取语言参数,因此在表单操作中?
在尝试提交表单时,
setLocale.php中间件中的handle函数不应该让我获取语言参数吗?
如果是,如何实现将其传递到下一页(通过表单操作)?
编辑
当我像这样编辑表单动作时它工作正常:
<form method="post" action="{{ route('validation', app()->getLocale()) }}">
这是一个好的解决方案吗?
【问题讨论】:
-
你会发现使用 formRequest 来处理这个更简单吗?
-
@GingaWRATH 你到底是什么意思?
-
@GingaWRATH 我使用 formRequest 来处理验证,我的问题是提交表单时;我无法将表单页面的语言参数获取到下一页
-
你没有忘记在
app/Http/Kernel中使用\App\Http\Middleware\setLocale::class引用你的中间件吗? -
@iArcadia 不,我这样做了
标签: php laravel routes translation url-parameters