页面控制器还是实体控制器?
Controllers by page or controllers by entity?
我正在 Laravel 建立一个自我管理的机构网站,其中包含一些动态内容,例如:产品、新闻、用户等,我对控制器和最佳实践提出了疑问。
虽然有些页面是完全静态的(关于、服务信息等),但其他页面(例如产品列表)是动态的。
我不确定是否必须按页面或实体创建控制器。例如:
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")
最好的方法是什么?
控制器将class 负责显示实体值。所以你应该使用你的第二个例子,实体控制器。
例如,您有功能 "Show my static site",这是一种功能,一种责任,所以一种 class/controller。如果您将它划分为多个控制器,则会产生重复代码。
您可以为静态页面只创建一个路由和一个方法,它将使用 slugs 从数据库中获取静态页面的数据。
Route::get('\static\{slug}', 'ContentController@buildStaticPage');
public function buildStaticPage($slug)
{
....
我认为没有 "better" 和 "worse",因为它始终取决于您的用例。但是,正如 laravel 打算用
php artisan make:controller MyController --resource
控制器可以代表一个实体的基本 crud 功能。因此,您的问题的方法 2 可能就是您要找的东西。
正如@Alexey Mezenin 所建议的那样,您当然可以创建一个专用于 return 您的静态页面的控制器 - 或者您甚至可以 return 它们在您的 reouts 中内联
Route::get('my-static', function() { return view('static.my-page' ); });
我正在 Laravel 建立一个自我管理的机构网站,其中包含一些动态内容,例如:产品、新闻、用户等,我对控制器和最佳实践提出了疑问。
虽然有些页面是完全静态的(关于、服务信息等),但其他页面(例如产品列表)是动态的。
我不确定是否必须按页面或实体创建控制器。例如:
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")
最好的方法是什么?
控制器将class 负责显示实体值。所以你应该使用你的第二个例子,实体控制器。
例如,您有功能 "Show my static site",这是一种功能,一种责任,所以一种 class/controller。如果您将它划分为多个控制器,则会产生重复代码。
您可以为静态页面只创建一个路由和一个方法,它将使用 slugs 从数据库中获取静态页面的数据。
Route::get('\static\{slug}', 'ContentController@buildStaticPage');
public function buildStaticPage($slug)
{
....
我认为没有 "better" 和 "worse",因为它始终取决于您的用例。但是,正如 laravel 打算用
php artisan make:controller MyController --resource
控制器可以代表一个实体的基本 crud 功能。因此,您的问题的方法 2 可能就是您要找的东西。
正如@Alexey Mezenin 所建议的那样,您当然可以创建一个专用于 return 您的静态页面的控制器 - 或者您甚至可以 return 它们在您的 reouts 中内联
Route::get('my-static', function() { return view('static.my-page' ); });