2015-06-10 2 views
0

Так у меня есть контроллер Laravel (MainController.php) со следующими строками:Laravel - могу ли я управлять маршрутами по правилам?

... 
public function _settings_a(){ 
    return view('_settings_a'); 
} 
public function _settings_b(){ 
    return view('_settings_b'); 
} 
public function _settings_c(){ 
    return view('_settings_c'); 
} 
public function _settings_d(){ 
    return view('_settings_d'); 
} 
public function _staff_a(){ 
    return view('_staff_a'); 
} 
public function _staff_b(){ 
    return view('_staff_b'); 
} 
public function _staff_c(){ 
    return view('_staff_c'); 
} 
... 

И мой routes.php выглядит следующим образом:

Route::any('_staff_a''[email protected]_staff_a'); 
Route::any('_staff_b''[email protected]_staff_b'); 
... 
etc. 

Кажется, есть много линий и ЛО вещей, которые нужно изменить, если я передумаю ...

Мне было интересно, могу ли я иметь некоторое регулярное выражение в routes.php и эквивалентное регулярное выражение в MainController.php для обработки маршрутов, начинающихся с подчеркивания (_)?

Может ли кто-либо из экспертов Laravel делиться некоторыми советами/предложениями? Я совершенно новичок в структуре.

ответ

1

Уверенный - просто добавьте его в качестве параметра. Например. например:

Route::any('_staff_{version}', '[email protected]_staff'); 

public function _staff($version) { 
    return view('_staff_'.$version); 
} 
+0

Я думаю, что это то, что мне нужно сделать! Я просто собираюсь попробовать это сейчас ... – Eamorr

+0

Это работает! Спасибо. Это идеально. – Eamorr

1

Я не думаю, что вам нужно возиться с регулярным выражением. Вы можете использовать неявные контроллеры Route::controller(), которые не являются лучшим решением, но будут делать то, что, я думаю, вы хотите.

Таким образом, вместо

Route::any(..)

вы можете сделать

Route::controller('url', 'MainController');

Так что ваш маршрут к любой 'URL' это пошлет вас к этому контроллеру. Следуйте этому с помощью «/», а затем добавьте какой бы метод в контроллер, который вы хотите вызвать.

Вот пример:

Мой URL: 'http://www.example.com/users'

// routes.php 
Route::controller('users', UserController'); 

// UserController.php 
public function getIndex() 
{ 
    // index stuff 
} 

Теперь я отправить запрос, как: http://www.example.com/users/edit-user/125

// UserController.php 
public function getEditUser($user_id) 
{ 
    // getEditUser, postEditUser, anyEditUser can be called on /users/edit-user 
    // and 125 is the parameter pasted to it 
} 

Действовать таким образом должно позволить вам быть способный просто отправить запрос (сообщение или получить) на URL-адрес, и контроллер должен иметь возможность вызвать правильный метод в зависимости от URL-адреса.

Вот еще некоторые правила о нем: http://laravel.com/docs/5.1/controllers#implicit-controllers

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