【发布时间】:2018-07-02 09:43:34
【问题描述】:
我的所有路由都在一个域组中,但我想避免在每个控制器方法中将域作为参数。
所以我想避免到处都有这个:
public function show($domain, $id) {}
并希望保留它为
public function show($id) {}
我能够部分使其与放置在中间件中的$request->route()->forgetParameter('subdomain') 一起工作,但在从控制器方法调用redirect()->action('SomeController@show') 的情况下它不起作用。
这里有更多细节:
首先,所有路由都在一个域组中。
Route::middleware(['some_middleware'])->domain('{subdomain}' .website.com)->group(function () {
// .. All routes
} );
然后,在 some_middleware 我有
public function handle($request, Closure $next) {
// ..
$request->route()->forgetParameter('subdomain');
return $next($request);
}
那么它不起作用的地方:
class SomeController {
public function process()
{
// ...
redirect()->action('SimpleController@show', ['simple' => $id]);
}
}
我得到的错误是:
Missing required parameters for [Route: ] [URI: simples/{simple}].
这仅在我明确传入 subdomain 变量时才有效。
class SomeController {
public function process()
{
// ...
redirect()->action('SimpleController@show', ['subdomain'=>'some_subdomain', 'simple' => $id]);
}
}
任何人都可以为此建议“修复”吗?在此先感谢:)
【问题讨论】:
标签: laravel laravel-5.5