2015-08-17 4 views
0

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

контроллер:

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

routing.yml

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

но URL в мой контроллер переадресовывает к контроллеру sonata.page.page_service_manager:execute

маршрут: "page_slug"

ответ

0

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

Создайте своего клиента 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 и она работает.