例如,在Yii框架中,我可以创建一个模块,这将确保完全与用户侧分离。在模块内部,我可以使用单独的文件夹结构等。
这确实是一个广泛的问题,一个答案无法涵盖有关管理控制器或后端管理的所有最佳实践,但在构建管理员面板
时有一些基本概念:
// Keep all of your admin routes inside something like this
Route::group(array('prefix'=> 'admin', 'before' => 'auth.admin'), function() {
// Show Dashboard (url: http://yoursite.com/admin)
Route::get('/', array('uses' => 'Admin\\DashBoardController@index', 'as' => 'admin.home'));
// Resource Controller for user management, nested so it needs to be relative
Route::resource('users', 'Admin\\UserController');
});
// Other routes (Non-Admin)
Route::get('login', array('uses' => 'AuthController@showLogin' 'as' => 'login'));
通过使用前缀
,您可以将所有管理路由分离出来,其url
将以admin
为前缀,因此,如果您有一个用于后端用户管理的users
控制器,则其url
将以admin
为前缀,即site.com/admin/users
。另外,通过使用before
过滤器,您可以在一个地方为所有管理控制器添加身份验证,这意味着,要访问您的所有管理控制器,用户必须登录,并且该过滤器可能是以下内容:
Route::filter('auth.admin', function($route, $request, $args){
// Check if the user is logged in, if not redirect to login url
if (Auth::guest()) return Redirect::guest('login');
// Check user type admin/general etc
if (Auth::user()->type != 'admin') return Redirect::to('/'); // home
});
对于 CRUD (创建、读取、更新、删除) 操作,使用资源控制器,例如,在资源路由声明中的UserController
是一个示例。
使用仓储类(Repository Pattern)进行依赖解耦,请阅读本文。
始终使用命名路由,例如array('as' => 'routename', 'uses' => 'SomeController@method')
,这是一个命名路由的示例。命名路由易于引用,例如return Redirect::route('admin.home')
将重定向到site.com/admin
,因为我们在as
中使用了admin.home
来指定该路由的名称。
将管理员控制器放在单独的文件夹中,并使用namespace
,例如:Admin\\DashBoardController@index
控制器应位于 app/controllers/admin
,您的DashBoardController
控制器应如下所示:
<?php namespace Admin;
class DashBoardController extends \BaseController {
public function index()
{
//...
}
}
还有更多内容,不过这些已经足够开始了。在网上阅读文章,并且务必阅读文档。
namespace
,那么您需要在类的顶部使用 \
或添加 use Request;
语句。 - The Alpha我在大多数(如果不是全部)Laravel项目中使用与您想要使用的相同目录结构。基本上,我将管理视图和管理控制器与前端视图和控制器分开。
例如:
app/controllers/admin/Admin*Name*Controller.php app/controllers/site/*Name*Controller.php
Views: app/views/admin/some_folder/index.blade.php app/views/site/some_folder/index.blade.php
我建议您安装这个 Laravel 项目 https://github.com/andrewelkins/Laravel-4-Bootstrap-Starter-Site,它将为您提供一个非常好的起点,以便在您的 Laravel 项目中组织事物。它还具有您想要使用的相同文件夹结构。