Пользовательская страница сонаты домашней страницы

Я создаю свой собственный контроллер для домашней страницы.

контроллер:

class FrontPageController extends Controller
{
    public function homeAction()
    {
         return $this->render('FrontPageBundle:Page:home.html.twig');
    }
}

маршрутизация.yml

front_page_home:
   path: /
   defaults: { _controller: FrontPageBundle:FrontPage:home }

но URL-адрес моего контроллера перенаправляется на контроллер sonata.page.page_service_manager:execute

маршрут: "page_slug"


person Mido    schedule 17.08.2015    source источник


Ответы (1)


Я нашел решение, но я не знаю, является ли это хорошей практикой или нет.

Я создаю класс своего клиента RoutePageGenerator и редактирую класс, который изменит маршрут к домашней странице. Как это:

 // Iterate over declared routes from the routing mechanism
    foreach ($this->router->getRouteCollection()->all() as $name => $route) {

        if($route->getPath() === "/")
        {
            $name = trim($name);
            $root = $this->pageManager->create(array(
                'routeName'     => $name,
                'name'          => $name,
                'url'           => $route->getPath(),
                'site'          => $site,
                'requestMethod' => isset($requirements['_method']) ? $requirements['_method'] : 'GET|POST|HEAD|DELETE|PUT',
                'slug'          => '/',
            ));
        }

Я удаляю эту часть кода:

        $root = $this->pageManager->getPageByUrl($site, '/');

    // no root url for the given website, create one
    if (!$root) {
        $root = $this->pageManager->create(array(
            'routeName'     => PageInterface::PAGE_ROUTE_CMS_NAME,
            'name'          => 'Homepage',
            'url'           => '/',
            'site'          => $site,
            'requestMethod' => isset($requirements['_method']) ? $requirements['_method'] : 'GET|POST|HEAD|DELETE|PUT',
            'slug'          => '/',
        ));

        $this->pageManager->save($root);
    }

Я создаю свою клиентскую команду UpdateCoreRoutesCommand и вызываю свой RoutePageGenerator:

просто выполните эту команду php app/console sonata:page:create-snapshots --site=1 и она работает.

person Mido    schedule 17.08.2015