Header Image

Полностью динамические страницы в Laravel

Загружено/обновлено 7 Июля 2016

Как сделать Routing к полностью динамическим страницам

Заходим в RouteServiceProvider. Регистрируем нашу модель страниц:

use App\Page;

затем в методе public function map(Router $router) класса сразу после регистрации самого файла Http/routes.php итерируем по имеющимся страницам, вот так:

$pages = Page::all();

foreach($pages as $page) { `
    $router->get($page->uri, ['as' => $page->route_name, function() use ($page, $router) {
            return $this->app->call('App\Http\Controllers\PagesController@show', [
                    'page' => $page,
                    'parameters' => $router->current()->parameters
                ]);
        }]);    
}

//URI => foo/{bar}
//$parameters['bar']

Таким образом метод $this->app->call будет вызываться для каждого $page->uri и передавать все параметры через переменную $parameters, плюс в сам объект страницы будет передан в PagesController@show.

Внимание

Не забываем, что в таблице pages необходимы поля uri и route_name.