我在laravel 5.2应用中设置了多域路由。我想要实现的是,如果用户点击,membership.app,与点击erp.app域名的用户相比,他应该被提供给不同的主页。
Route::pattern('erp', 'erp.app|erp.domain.com');
Route::pattern('membership', 'membership.app|membership.domain.com');
Route::group(['middleware' => ['web', 'auth'], 'domain' => '{erp}'], function() {
Route::get('/', 'HomeController@getIndex');
Route::controller('members', 'MembersController');
Route::controller('users', 'UsersController');
Route::controller('settings', 'SettingsController');
});
Route::group(['middleware' => 'web', 'domain' => '{erp}'], function () {
Route::controller('auth', 'Auth\AuthController');
});
Route::group(['middleware' => 'web', 'domain' => '{membership}'], function () {
Route::controller('/', 'BecomeMemberController');
});
Route::group(['middleware' => 'web'], function () {
Route::controller('ajax', 'AjaxController');
});
我尝试了这个设置,但它打破了代码,每个控制器方法中的第一个参数是url而不是预期值。
假设我在hello
控制器中有一个方法members
。
public function hello($param1, $param2)
{
....
}
如果我访问erp.app/members/hello/1/2
网址并尝试打印出$param1
控制器方法,则在这种情况下会返回erp.app
而不是预期的1
。
请帮忙。
答案 0 :(得分:0)
我不知道为什么你没有把路线分成不同的控制器,因为你说输出会有很大不同......
使用它的一个简单示例:
Route::group(['domain' => '{type}.myapp.com'], function () {
Route::get('members/hello/{id1}/{id2}', function ($type, $id1, $id2) {
// when you enter --> members.myapp.com/hello/12/45
var_dump($type); //memebers
var_dump($id1); //12
var_dump($id2); //45
});
});