Это действительно широкий вопрос, и один ответ не может охватить все, что касается передового опыта для контроллеров администратора или управления серверной частью, но есть некоторые основные концепции для создания Admin Panel
:
// 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'));
Используя prefix
, вы можете разделить все маршруты администратора, чьи 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
, потому что мы использовали admin.home
в as
для присвоения имени этому маршруту.
Держите контроллеры администратора в отдельной папке и используйте namespace
, например, Admin\\DashBoardController@index
контроллер должен быть в app/controllers/admin
, а ваш DashBoardController
контроллер должен выглядеть так:
<?php namespace Admin;
class DashBoardController extends \BaseController {
public function index()
{
//...
}
}
Есть еще, но для начала достаточно прочитать статьи в Интернете и обязательно прочитать документацию.
person
The Alpha
schedule
25.04.2014