我使用Laravel 3和两组登录控制器 - 主域名登录,所有子域名都应该路由到portal / login @ index
我在routes.php中使用以下代码:
Route::filter('before', function()
{
$server = explode('.', Request::server('HTTP_HOST'));
if (count($server) == 3)
{
$account = Account::where('subdomain', '=', $server[0])->first();
Session::put('account_id', $account->id);
Route::get('login', 'portal.login@index');
Route::post('login', 'portal.login@index');
Route::get('logout/(:any)', 'portal.login@logout');
}
else
{
// some other stuff - no routing calls in here
}
}
此代码适用于捕获子域和&执行其他任务(例如设置$ account_id),但似乎对路由没有影响
test.mydomain.com/login应该转到portal / login,而是转到主登录控制器。
我已经搜索过以确保没有影响此功能的过滤器(它是一个继承的应用)
这是设置此方法的正确方法吗?如果是这样,还有什么可能影响到这个?
TIA!
答案 0 :(得分:0)
这是因为当你在里面时
if (count($server) == 3)
{
// Here
}
使用get/post
注册新路由不会响应,因为系统已完成路由匹配,在这种情况下,您可以使用
Route::forward($method, $uri);
哪个在laravel/routing/route.php
文件中给出了nelow
/**
* Calls the specified route and returns its response.
*
* @param string $method
* @param string $uri
* @return Response
*/
public static function forward($method, $uri)
{
return Router::route(strtoupper($method), $uri)->call();
}
因此,如果您要创建类似于Route::get('login', 'portal.login@index');
的请求,那么您可以将其作为
路线::前进('GET','登录');
在这种情况下,您通常只需注册路线即可注册此路线。因此,在routes.php
中注册/添加要动态创建的请求,并在
Route::forward()
方法
if (count($server) == 3)
{
Route::forward('GET', 'login'); // for a get request
Route::forward('POST', 'login'); // for a post request
}
就是这样。