自定义主页奏鸣曲页面

Posted

技术标签:

【中文标题】自定义主页奏鸣曲页面【英文标题】:Custom Home page sonata page 【发布时间】:2015-11-09 20:44:49 【问题描述】:

我为主页创建自定义控制器。

控制器:

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”

【问题讨论】:

【参考方案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 并且有效。

【讨论】:

以上是关于自定义主页奏鸣曲页面的主要内容,如果未能解决你的问题,请参考以下文章

markdown 奏鸣曲管理员自定义页面

带有自定义菜单的 Symfony2 与奏鸣曲集成

Sonata Admin 自定义模板

自定义奏鸣曲左侧边栏

在奏鸣曲管理实体的显示模板中添加自定义表单

Symfony2:奏鸣曲实体中的自定义标识符