2016-08-31 2 views
1

Je construis à Laravel un site Web institutionnel autogéré avec du contenu dynamique comme: des produits, des nouvelles, des utilisateurs, etc., et j'ai eu un doute sur les contrôleurs et les meilleures pratiques.Contrôleurs par page ou contrôleurs par entité?

Alors que certaines pages sont entièrement statiques (environ, informations sur les services, ...), d'autres, comme la liste des produits, sont dynamiques.

Je ne suis pas sûr si je dois créer des contrôleurs par page ou entités. Par exemple:

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") 

Quelle est la meilleure approche pour cela?

Répondre

1

Le contrôleur sera responsable de l'affichage des valeurs d'entité. Donc, vous devriez utiliser votre deuxième exemple, les contrôleurs par entité.

Vous avez par exemple la fonctionnalité "Afficher mon site statique", c'est une fonctionnalité, une responsabilité, donc une classe/contrôleur. Si vous le divisez pour de nombreux contrôleurs, cela vous a donné du code en double.

+0

Ainsi, chaque contrôleur est chargé de montrer toutes les pages pour la même entité? Aussi toutes les opérations d'entité de CRUD? –

+1

Vous avez par exemple la fonctionnalité "Montrer mon site statique", c'est une fonctionnalité, une responsabilité, donc une classe/contrôleur. Si vous le divisez pour de nombreux contrôleurs, cela vous a donné du code en double. Oui aussi CRUD, mais rappelez-vous de ne pas empaqueter la logique dans les contrôleurs – Damonsson

+0

Cela a du sens, merci! –

1

Vous pouvez créer un seul itinéraire et une méthode pour les pages statiques, qui utiliseront des limaces pour obtenir des données pour les pages statiques à partir de la base de données.

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

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

Oui, c'est ce que je fais maintenant. Je voulais juste connaître la meilleure approche concernant le concept des contrôleurs. –

1

Je pense qu'il n'y a pas de "meilleur" et "pire" car cela dépend toujours de votre cas d'utilisation. Cependant, comme le prévoit laravel avec

php artisan make:controller MyController --resource 

Un contrôleur pourrait représenter la fonctionnalité de base de crud concernant une entité. Donc probablement l'approche 2 de votre question est ce que vous cherchez.

Comme @Alexey Mezenin vous propose pouvez créer un contrôleur ofcourse qui est dédié à retourner vos pages statiques - ou vous pouvez même les retourner en ligne dans vos reouts

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

J'ai toujours pensé dans les contrôleurs plus comme "un avocat un client". Je veux dire, le but d'eux est de réaliser une seule vue. La raison en est que cela pourrait devenir un noyau Linux si vous manipulez chaque action pour une seule entité et je déteste ce genre de choses. –

+0

Comme mentionné il n'y a pas le "one-and-only-way" vous êtes libre de le faire, mais j'ai toujours eu le sentiment que vous rencontrez des tonnes de contrôleurs si vous le faites. Toutefois, si vous avez un cas de figure où vous avez un grand nombre de points de terminaison pour une même vue, il peut être judicieux d'avoir un contrôleur par vue. –