2016-08-31 16 views
1

私はLaravelに、製品、ニュース、ユーザーなどの動的コンテンツを含む自己管理の機関Webサイトを構築しています。コントローラとベストプラクティスについては疑問を呈しました。エンティティごとのコントローラまたはコントローラ

一部のページは完全に静的なもの(約、サービス情報、...)ですが、商品リストのような他のものは動的です。

コントローラをページ単位で作成する必要があるかどうかはわかりません。例:

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

コントローラは、エンティティ値の表示を担当するクラスとなります。したがって、エンティティごとにコントローラを2つ使用してください。

たとえば、「静的なサイトを表示する」という機能があります。これは1つの機能、1つの責任、1つのクラス/コントローラです。あなたが多くのコントローラのためにそれを分割すると、それはあなたにコードを複製しました。

+0

それらを返すことができます同じエンティティですか? CRUDのエンティティ操作もすべてですか? –

+1

たとえば、「静的なサイトを表示する」という機能があります。これは1つの機能、1つの責任、1つのクラス/コントローラです。あなたが多くのコントローラのためにそれを分割すると、それはあなたにコードを複製しました。はい、CRUDですが、コントローラーにロジックをパックしないでください。 – Damonsson

+0

それは意味があります、ありがとう! –

1

スタティックページ用にルートとメソッドを1つだけ作成できます。スラグを使用してDBから静的ページのデータを取得します。

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

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

はい、それは私が今やっていることです。コントローラのコンセプトに関する最良のアプローチを知りたかっただけです。 –

1

私はあなたの用途に応じて「良い」と「悪い」がないと思います。しかし、制御装置は、1つのエンティティに関する基本的な機能の不足を表すものとする。したがっておそらくあなたの質問のアプローチ2はあなたが探しているものです。

@Alexey Mezeninは、あなたがofcourseのあなたの静的なページを返すために専用されているコントローラを作成することができ、提案として - だから、すべてのコントローラがのためにすべてのページを表示する責任があるか、あなたもあなたのreoutsにインライン

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

私はいつもコントローラーで "弁護士のクライアント"のように思ってきました。つまり、彼らの目的は単一の視点を達成することです。その理由は、単一のエンティティのすべてのアクションを処理する場合、それがLinuxカーネルになる可能性があり、このタイプのものが嫌いです。 –

+0

言われたように、あなたは自由である「ワン・アンド・オンリー・ウェイ」はありませんが、そうした場合、私はいつもあなたが何トンものコントローラーを使いこなしているという気持ちがあります。 しかし、単一のビューのエンドポイントが多いユースケースがある場合は、ビューごとにコントローラを持つことが理にかなっているかもしれません。 –

関連する問題