2013-10-14 1 views
1

나는 laravel에 꽤 새로 왔으며, laravel MVC 애플리케이션에서 보았던 것에서 컨트롤러를 사용하여 컨트롤러를 사용하여 View::make('[PATH]')을 통해보기를 반환하므로 일반적인 시나리오는 이렇게 될 것입니다. : 응용 프로그램/routes.php더 나은 길 찾기 및 생성보기

Route::get('search', array(
     'uses' => '[email protected]', 
     'as' => 'search.index' 
    )); 
    Route::get('search_result', array(
     'uses' => '[email protected]', 
     ' 
    )); 

응용 프로그램/컨트롤러/그 경우 나중에 O를 제외한 모든 좋은 SearchControllers.php

public function newSearch() 
    { 
     return View::make('search'); 
    } 

    public function runSearch() 
    { 
     //validate and query search 

     return View::make('search') 
      ->with('result',$result); 
    } 

n 우리는 뷰를 재구성하고 search.php을 다른 관련 뷰와 함께 예를 들어 web/search.php에 배치하기로 결정 했으므로 뷰에 대한 경로를 업데이트하기 위해 모든 컨트롤러를 추적하지 않아도됩니까?

대신,이 모든 단점 내가 대신이 같은 '보기 공장'으로 route.php을한다면 :

추가 경로를 만들기 위해 필요하지만 여전히 작동합니다
Route::get('search', array('as' => 'search.index', function() 
    { 
     return View::make('search'); 
    })); 
    Route::get('search_query', array(
     'uses' => '[email protected]' 
    )); 
    Route::get('search_result', array('as' => 'search.result', function() 
    { 
     return View::make('search') 
      ->with('result',Session::get('result')); 
    })); 

보기를 재구성하거나보기의 이름을 변경해야한다면 route.php을 추적하고 업데이트하면됩니다.

경로와 컨트롤러를 연결하는 데 문제가 있습니까? 또는 컨트롤러에서 뷰 경로를 추상화하는 다른 더 좋은 방법이 있습니까?

답변

0

분명히 routes.php에는 라우팅 관련 정보 만 포함해야합니다. 그것은 비즈니스 로그인을 포함하지 않아야합니다. 이것은 컨트롤러를위한 것입니다. 따라서 귀하의 경로가 현재로서는 괜찮다고 말할 수 있지만 귀하의 search_result 경로에 비즈니스 로직을 추가해야하는 경우 컨트롤러로 이동하고 경로를 수정해야합니다. 나는 그것이 routes.php보다 컨트롤러에서 더 잘 표현 된 것 같아요.

달성하고자하는 기능에 따라 resourceful controllers & routing을 사용할 수도 있습니다.

+0

예에서 수정 된 컨트롤러에 대한 코드를 첨부하지 않았지만 예, 라우팅에서 비즈니스 로직 처리를 수행하지 않습니다. 컨트롤러가 무엇인지 알아야합니다. 비즈니스 논리로 매개 변수 (결과). 내가 어떻게 MVC 애플 리케이션을 작성하는 일반적인 관행이지만, 만약이 경우에, RESTful 컨트롤러를 작성 제외하고보기를 반환하는 더 좋은 방법이 궁금 해서요. – har2vey

+0

@ har2vey 나는 내가 말할 수있는 순간에 받아 들일 만하다고 말하고 있지만 컨트롤러에는 단 한 번의 리턴 이상의 무엇인가가 있어야합니다. –

0

클래스 이름을 저장하고보기를 만들 때마다 해당 속성을 호출하는 속성을 클래스에 만들 수 있습니다.