gpt4 book ai didi

php - Laravel 5 通配子域+路由模型绑定(bind)

转载 作者:可可西里 更新时间:2023-10-31 23:47:22 25 4
gpt4 key购买 nike

所以当你在类似这样的通配符子域组路由中定义资源 Controller 时:

Route::group(array('domain' => '{subdomain}.example.com'), function() {
Route::resource('users', 'UserController');
});

在 RouteServiceProvider 上

$router->model('user', 'App\User');

在 UserController show 方法上:

public function show($user)
{
return $user;
}

我得到的是子域名而不是用户资源。这是因为 subdomain 参数被传递给 Controller ​​方法,我必须像这样更改它们:

public function show($subdomain, $user)
{
return $user;
}

我只是不想将 subdomain 参数添加到我的应用程序中的每个 Controller 方法,因为我不会用它做任何事情。我在中间件中使用子域参数来进行一些配置更改。

我该怎么做才能使子域不作为参数传递给 Controller ​​?

最佳答案

虽然我在搜索另一个路由模型绑定(bind)问题的答案时偶然发现了这篇文章,但我知道这个问题有些陈旧(并且可能陈旧)。

为了避免需要子域,您可以指定 Laravel 忘记该路由参数。

您可以在中间件(也检查子域)中执行此操作,如下所示:

$request->route()->forgetParameter('subdomain');

或者,使用您的代码片段,它看起来类似于:

Route::group(array('domain' => '{subdomain}.example.com'), function() {
Route::forgetParameter('subdomain');
Route::resource('users', 'UserController');
});

但是,我强烈建议将该过程移到中间件中,因为将它放在路由文件中感觉不对。

关于php - Laravel 5 通配子域+路由模型绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com