2013-06-25 3 views
1

내가 로그인 컨트롤러의 두 세트 Laravel 3을 사용하고 - 주요 도메인 로그인 간다, 모든 하위 도메인은 루트 나는 다음 코드를 사용하고/로그인 @ 지수를Laravel 3 - 설정 노선 dyncamically

를 포털에해야 내 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', '[email protected]'); 
     Route::post('login', '[email protected]'); 
     Route::get('logout/(:any)', '[email protected]'); 
    } 
    else 
    { 
    // some other stuff - no routing calls in here 
    } 
} 

이 코드는 하위 도메인 & (예 : $의 ACCOUNT_ID 설정과 같은) 다른 작업을 수행을 캡처 잘 작동하지만 라우팅

test.mydomain에 영향을 갖고있는 것 같다. com/login은 portal/logi로 이동해야합니다. n 대신 메인 로그인 컨트롤러로갑니다.

나는이 영향을 미치는하는 필터가 없는지 확인을 통해 검색 한

는이를 설정하는 올바른 방법인가, 그렇다면,이 영향을 미치는 그 밖의 무엇을 수 있습니다 (이것은 상속 응용 프로그램입니다)?

TIA!

답변

0

당신이

if (count($server) == 3) 
{ 
    // Here 
} 

get/post를 사용하여 새로운 경로의 등록은 시스템에 이미 경로 매칭을 수행했기 때문에이 경우에는 응답하지 않을 내부에있는 경우 새 요청을 전달할 수 있기 때문이다

/** 
* 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(); 
} 
nelow 주어진 laravel/routing/route.php 파일에

Route::forward($method, $uri); 

를 사용하여 경로 당신이 Route::get('login', '[email protected]'); 유사한 요청을 만들려면3210

그래서, 당신은 앞으로

경로 ::로 할 수 있습니다 ('로그인'을 'GET'); 이 경우,이 경로는 등록 된 경로로만 등록하면됩니다. 그래서,/등록 동적으로 생성하고있어

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

내부 Route::forward() 방법을 사용할 routes.php의 요청을 추가합니다.

+0

감사합니다. 나는 그것을 살펴볼 것입니다. 그러나, 나는 그것이 카운트 ($ 서버) 안에 있기 때문에 그것이라고 믿지 않는다; 그것은 before 필터에 있기 때문입니다. 나는 그것을 정상적인 라우팅으로 옮겼고 올바르게 작동했다. 당신의 대답은 근본적으로 정확합니다. - 조사하겠습니다. – jmadsen

+0

@jmadsen, 환영합니다. 기다리고 있습니다 ... –