Лучший способ приблизиться к этому зависит от того, что вы пытаетесь сделать со своими «динамическими» маршрутами.
Ваши маршруты работают нормально, как написано, что 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, возможно, проверьте наличие доступного представления или запросите базу данных, иначе возвращаете NotFoundHttpException
.
Вероятно, было бы лучше, чтобы справиться с некоторыми из этой логики в routes.php
-для Например, требование {dynamic_page}, чтобы выполнить определенные требования-числовой идентификатор, возможно, путем добавления
->where('dynamic_page', '[0-9]+');
(как было предложено выше Joel).
Обратите внимание, что способ, которым вы его настроили, будет принимать только подстановочный знак «root-level»; вызовы с дополнительными параметрами, такие как http://example.com/some_page/something_else
, не будут выполнены, возвращая NotFoundHttpException
и/или приводя к странице ошибок 404.