Есть ли способ смешивать статические и динамические маршруты в Laravel 4?

Мне интересно, есть ли способ указать статические маршруты, наряду со способом динамического поиска 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');

Как бы я это настроил?

4

Решение

Мне тоже не ясно, о чем вы спрашиваете. Но пример динамического маршрута может быть следующим (обратите внимание на параметр customer_id и как он используется):

Route::get('{customer_id}/profile', 'CustomerController@getProfile')->where('customer_id', '[0-9]+');

Маршрут корневого URL может выглядеть так:

Route::get('/', array('as' => 'root', 'uses' => 'RootController@showRoot'));

Опять же, я не совсем уверен, что вы подразумеваете под «динамическим поиском корневого URL».

1

Другие решения

Лучший способ достичь этого зависит от того, что вы пытаетесь сделать со своими «динамическими» маршрутами.

Ваши маршруты работают так же хорошо, как написано, в этом вызовы 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.

1

По вопросам рекламы [email protected]