Мне интересно, есть ли способ указать статические маршруты, наряду со способом динамического поиска URL-адреса страницы корневого уровня, что-то вроде ниже будет в моем файле rout.php
Route::get('admin/users', array('before' => 'isAdmin', 'uses' => 'UserController@userAdministration'));
Route::post('admin/users', array('before' => 'isAdmin', 'uses' => 'UserController@userList'));
Route::post('profile', 'UserController@profile');
Route::get('{dynamic_page}','PageController@getPage');
Как бы я это настроил?
Мне тоже не ясно, о чем вы спрашиваете. Но пример динамического маршрута может быть следующим (обратите внимание на параметр customer_id и как он используется):
Route::get('{customer_id}/profile', 'CustomerController@getProfile')->where('customer_id', '[0-9]+');
Маршрут корневого URL может выглядеть так:
Route::get('/', array('as' => 'root', 'uses' => 'RootController@showRoot'));
Опять же, я не совсем уверен, что вы подразумеваете под «динамическим поиском корневого URL».
Лучший способ достичь этого зависит от того, что вы пытаетесь сделать со своими «динамическими» маршрутами.
Ваши маршруты работают так же хорошо, как написано, в этом вызовы GET или POST к URL http://example.com/admin/users
а также http://example.com/profile
будет перенаправлен на UserController, в то время как любой другой «корневой» уровень GET (например, вызов http://example.com/some_page
) будет направлять к getPage
метод PageController
, Оттуда вы можете получить доступ к параметру {dynamic_page} и действовать по своему усмотрению:
class PageController extends BaseController {
public function getPage($dynamic_page) {
// do something here with $dynamic_page:
//
// for example, return a view based on $dynamic_page
// return View::make($dynamic_page);
//
// or retrieve a row from the database based on $dynamic_page
// $page = new Page($dynamic_page);
return ('The page is '.$dynamic_page);
}
}
Предположительно, в вашем PageController вам нужно будет что-то сделать с $ dynamic_page, чтобы убедиться, что правильный ответ доступен — пропустите его через оператор switch, возможно, проверьте наличие доступного View или запросите базу данных — в противном случае верните NotFoundHttpException
,
Вероятно, было бы лучше справиться с этой логикой в routes.php
— например, требуя {dynamic_page} для выполнения определенных требований — числовой идентификатор, возможно, путем добавления
->where('dynamic_page', '[0-9]+');
(как Джоэл предложил выше).
Также обратите внимание, что то, как вы его настроите, будет принимать только подстановочный знак «корневого уровня»; вызовы с дополнительными параметрами, такими как http://example.com/some_page/something_else
, не получится, вернув NotFoundHttpException
и / или ведет к странице ошибки 404.