2016-08-31 5 views
1

저는 제품, 뉴스, 사용자 등 동적 인 콘텐츠가 포함 된 자체 관리 기관 웹 사이트를 Laravel에 구축하고 있습니다. 컨트롤러 및 모범 사례에 대한 의문이 생겼습니다.엔티티 별 페이지 또는 컨트롤러 별 컨트롤러?

일부 페이지는 완전히 정적 인 반면 (about, services info, ...) 제품 목록과 같이 동적 인 페이지도 있습니다.

컨트롤러를 페이지 또는 엔티티별로 만들어야하는지 잘 모르겠습니다. 예 :

ProductController => shows the page for a single product 
ProductsController => shows the page for listing all the products 
SearchController => shows the page for searching products 
AboutController => shows the about page 
ServicesController => shows the page for listing services 

vs 

ProductsController => shows the page for single and multiple products, and the search products page 
PagesController/StaticController => shows all static pages (like "about" and "services") 

최상의 방법은 무엇입니까?

답변

1

컨트롤러는 엔티티 값을 표시하는 클래스입니다. 따라서 두 번째 예제 인 컨트롤러를 엔티티별로 사용해야합니다.

예를 들어 "내 정적 사이트 표시"기능, 하나의 책임, 하나의 책임, 하나의 클래스/컨트롤러가 있습니다. 많은 컨트롤러로 나누면 코드가 중복됩니다.

+0

그래서 모든 컨트롤러에 대한 모든 페이지를 보여주는를 담당하는 reouts에 인라인을 반환 할 수 같은 주체? 또한 모든 CRUD의 법인 운영? –

+1

예를 들어 "정적 사이트 표시"기능, 하나의 기능, 하나의 책임, 하나의 클래스/컨트롤러가 있습니다. 많은 컨트롤러로 나누면 코드가 중복됩니다. 예 CRUD,하지만 컨트롤러에 로직을 팩하지 마십시오. – Damonsson

+0

감사합니다. 감사합니다! –

1

DB에서 정적 페이지에 대한 데이터를 얻기 위해 슬러그를 사용하는 정적 페이지에 대해 단 하나의 경로와 하나의 방법을 만들 수 있습니다.

Route::get('\static\{slug}', '[email protected]'); 

public function buildStaticPage($slug) 
{ 
    .... 
+0

예, 지금 제가하고있는 일입니다. 컨트롤러 개념과 관련하여 가장 좋은 방법을 알고 싶었습니다. –

1

나는 항상 당신의 유스 케이스에 달려 있기 때문에 "더 좋고"더 나쁜 것은 없다고 생각합니다. 그러나, 다음과 같이 의도된다 : 컨트롤러는 하나의 엔티티에 관한 기본 crud 기능을 나타낸다. 따라서 아마 당신의 질문에 대한 접근 2는 당신이 찾고있는 것입니다.

@Alexey Mezenin 당신이 당연히 정적 페이지를 반환하는 전용 컨트롤러를 만들 수 있습니다 제안으로 - 또는 심지어

Route::get('my-static', function() { return view('static.my-page'); }); 
+0

저는 항상 컨트롤러에서 "변호사와 클라이언트"를 생각했습니다. 내 말은, 그들 목적은 단일 견해를 완수하는 것입니다. 그 이유는 단일 엔티티에 대한 모든 작업을 처리하는 경우 Linux 커널이 될 수 있기 때문에 이런 유형의 것을 싫어하기 때문입니다. –

+0

언급했듯이 "one-and-only-way"가 아니기 때문에 자유롭게 그렇게 할 수 있습니다.하지만 그렇게 할 경우 항상 많은 수의 컨트롤러를 사용하게됩니다. 그러나 단일보기에 대해 많은 끝점이있는 유스 케이스가 있다면보기 당 컨트롤러를 갖는 것이 합리적 일 수 있습니다. –

관련 문제