2014-01-13 2 views
3

컨트롤러 방법 4 라우팅 : 세션이 account_id이있는 경우 사용자가 /account/ Laravel 다음과 같이 나는 현재 경로에 노력하고있어

  • 를 가져옵니다

    • 경우, 사용자가 로그인; 그의 계좌 정보 표시
    • 그렇지 않으면 사용자가 로그인하지 않은 것입니다. 쇼 로그인/작성 양식
  • 하면 사용자 POST를 /account/
    • 입력 create이있는 경우, 사용자가 계정을 만들려고합니다; 그것을 창조하십시오
    • 그렇지 않으면, 사용자는 로그인하고 싶습니다; 자신의 계정을 찾아 내 루트는 설정 /account/

다시 이런 식으로 이동 :

Route::get('account', function() { 
    if (Session::has('account_id')) 
     return '[email protected]'; 
    else 
     return '[email protected]'; 
}); 

Route::post('account', function() { 
    if (Input::has('create')) { 
     return '[email protected]'; 
    else  
     return '[email protected]'; 
)}; 

이 내가 레일과는 얼마나 다소입니다,하지만 난 가리 키도록 방법을 모른다 컨트롤러 방법. 반환 된 문자열을 결과로 얻습니다. Laravel 문서에서 찾지 못했습니다. (다른 웹 튜토리얼에서는 그렇지 않습니다.)

Route::get('account', function() { 
    if (Session::has('account_id')) { 
     $action = 'show'; 
     return App::make('AccountsController')->$action(); 
    } 
    else { 
     $action = 'index'; 
     return App::make('AccountsController')->$action(); 
    } 
}); 

Route::post('account', function() { 
    if (Input::has('create')) { 
     $action = 'create'; 
     return App::make('AccountsController')->$action(); 
    } 
    else { 
     $action = 'login'; 
     return App::make('AccountsController')->$action(); 
    } 
)}; 
+0

하지만, : HTTP : 당신이

Redirect::action('[email protected]') 

을 갖고 싶어
예를 들어, 같은이 작업을 정의해야합니다 // laravel을 .com/api/source-class-Illuminate.Routing.Controllers.Controller.html # 93-127 – alayli

답변

9

은 다음보십시오.

당신은 각각의 컨트롤러에, 당신은 당신의 테스트를 해보고 싶어요, 다음

Route::get('account', '[email protected]'); 
Route::get('account', '[email protected]'); 

을하고 싶은 것, 다음을 수행 예를 들어,

if (Session::has('account_id')){ 
    return Redirect::action('[email protected]'); 
} 
else{ 
    return Redirect::action('[email protected]'); 
} 

그러나, 당신이 정의 할 각 작업에 대한 경로이므로 응용 프로그램에서 URL을 감지 할 수 있습니다. 이 사람이 당신을 도울 수

Route::get('/account/show', '[email protected]') 
내가 시도하지 않았다
+0

필터를 사용하여이를 구현하는 가장 좋은 방법입니다. 필터를 사용하여 예제를 구현하려고합니다. – Anam

+0

일했습니다. 고마워요! – ranisalt

0

그래서, 당신은 컨트롤러에서 모든 논리를 넣을 :

+0

글쎄, 사용자가 2 가지 카테고리에 동시에 빠지게 할 수는 없으므로 (로그인 또는 게시 여부, 로그인 여부 등) 조치를 차별화해야합니까? 더 많은 경로/페이지를 갖고 싶지는 않았지만 모든 컨트롤러 메소드에 대해'/ accounts /'만 있으면 충분합니다. – ranisalt

+0

죄송합니다. 정확히 무엇을 묻고 계십니까? 엄밀히 말하면, 앞에서했던 것처럼 routes.php 파일에 클로저를 넣을 수 있지만 리다이렉션 액션을 반환하는 가장 깨끗한 방법은 위에서 보여준 방법입니다. – elliotanderson

관련 문제