2015-05-28 4 views
1

Я только что недавно попал в MVC и Laravel и задался вопросом, как правильно обращаться с вещами.Маршруты Laravel и правильный рабочий процесс

Предположим, что я создаю веб-сайт с его CMS или что-то подобное.

У меня есть целевой страницы www.website.com с CMS на www.website.com/cms/

Система CMS имеет навигационное меню, у которого каждый элемент представляет собой таблицу в БД.

Скажем, учетные записи | Статьи | Меню - нажатие на каждый элемент должно привести список записей в каждой из таблиц.

Для этого я:

а) иметь маршрут

Route::get('cms/{requestedtable}', '[email protected]'); 

И в этом маршруте я

switch($requestedtable) 
    case 'accounts'; 
     $data = Account::all(); 
    case 'menu' 
     $data = Menu::all(); 

б) иметь маршрут для каждого пункта

Route::get('cms/accounts/', '[email protected]'); 

public function index() { 

    Account::all() 

То же самое для вставки, обновления а также удаление. Было бы правильнее создать маршрут для каждого из событий

Route::get('cms/accounts/', '[email protected]'); 
Route::get('cms/accounts/create', '[email protected]'); 
Route::get('cms/accounts/update', '[email protected]'); 

Или только один маршрут, но используя другую функцию

Route::get('cms/{{requestedtable))/update', '[email protected]'); 

То, что я боюсь с динамическим вариантом, является то, что я у меня будет 30 глубоких переключателей, если у меня будет 30 столов. Но опять же у меня также будет 30 контроллеров, если у меня будет 30 столов. Я всегда хочу, чтобы мой код был как стандартизированный (это даже слово), насколько это возможно, даже если я работаю только над этим. Мне нравится делать все правильно.

Спасибо за любой ввод.

ответ

2

Хорошо, что нет правильного или неправильного и оба варианта действительны, хотя я предпочитаю иметь много маршрутов, чем один маршрут с подстановочным знаком и добавление дополнительной логики. Это просто кажется неправильным, и я заверяю вас, что в будущем вы пожалеете об этом.

Также я заметил, что вы заинтересованы в выполнении типичных операций CRUD, используя Resource Controller - это хороший способ сохранить ваш routes.php в чистоте. Обратите внимание, что хотя контроллеры ресурсов обычно используются в API REST, вы можете использовать их в любом веб-приложении.

Это как ваш routes.php будет:

Route::group(['prefix' => 'cms'], function() 
{ 
    Route::resource('Accounts','AccountsController'); 
    Route::resource('Articles','ArticlesController'); 
    Route::resource('Menu','MenuController'); 
}); 

И это будет доступные маршруты: php artisan route:list

Обратите внимание, что вы также можете использовать подстановочные знаки на контроллерах ресурсов, как указано here:

Route::resource('{resource}', 'PagesController'); 
+0

Буквально через 2 минуты после создания этой статьи я перешел к следующему эпизоду Laracasts, и речь шла о маршрутах и ​​Res ources. Это изящное решение, с которым я пойду! Благодарю. – Foxhoundn

Смежные вопросы