【发布时间】:2016-07-31 22:21:25
【问题描述】:
我的应用应该有管理、成员和公共区域,映射自 admin.mydomain.com、members.mydomain.com 和 www.mydomain.com。文档包含以下有关子域路由的示例:
Route::group(['domain' => '{account}.myapp.com'], function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});
但我不想硬编码或使用其他方式路由中的二级域名(本例中为 myapp.com)。所以我是这样设计的:
Route::pattern('domain', '.+\..+');
Route::group(['namespace' => 'Admin', 'domain' => 'admin.{domain}', 'middleware' => 'auth'],
function () {
Route::get('/edit/{id}/{name}', 'MyController@index');
});
然后我做了一个类似的控制器
class MyController extends Controller
{
function index($id, $name) {
dd($id);
}
}
当我浏览 admin.mydomain.com/edit/1/alex 时,我得到输出“admin”。 当然,这是因为我使用 {domain} 作为模式。但我不想在所有管理控制器的每个操作中都接收域作为第一个参数。请帮助我以正确的方式做到这一点。
【问题讨论】:
-
我没有亲自尝试过,但是您应该可以在控制器和请求本身之间放置一个中间件。您不会将第一个参数作为控制器中的子域,除非您特别希望将其传递给某些/所有控制器。