Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 3-动态设置路由_Laravel_Laravel 3 - Fatal编程技术网

Laravel 3-动态设置路由

Laravel 3-动态设置路由,laravel,laravel-3,Laravel,Laravel 3,我使用的是带有两组登录控制器的Laravel3,主域用于登录,所有子域都应路由到门户/login@index 我在我的routes.php中使用以下代码: Route::filter('before', function() { $server = explode('.', Request::server('HTTP_HOST')); if (count($server) == 3) { $account = Account::where('subdomain',

我使用的是带有两组登录控制器的Laravel3,主域用于登录,所有子域都应路由到门户/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\u id,但似乎对路由没有影响

test.mydomain.com/login应转到portal/login,但应转到主登录控制器

我已经搜索过了,以确保没有影响它的过滤器。它是一个继承的应用程序

这是正确的设置方法吗?如果是的话,还有什么可能会影响这一设置


蒂亚

因为当你在里面的时候

if (count($server) == 3)
{
    // Here
}
使用get/post注册新路由不会响应,因为系统已经完成了路由匹配,在这种情况下,您可以使用

Route::forward($method, $uri);
它位于给定的laravel/routing/route.php文件中

/**
 * 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'; 那你就可以照我说的做了

路由::转发“获取”、“登录”; 在这种情况下,您已经注册了此路由,而通常您只是注册了一个路由。因此,在routes.php中注册/添加要动态创建的请求,并在其中使用Route::forward方法

if (count($server) == 3)
{
    Route::forward('GET', 'login'); // for a get request
    Route::forward('POST', 'login'); // for a post request
}

就这样。

谢谢,我来看看。然而,我不相信这是因为它在count$服务器中;这是因为它位于前过滤器中。我把它移到了正常的路径&它工作正常。不过,你的答案似乎基本上是正确的——我会调查并让你知道