我曾经想在sonataadmin中的左边菜单创建一个新的链接,点击链接,跳转到一个自定义的页面,这个自定义的页面要继承sonataadmin的风格和布局,我被卡住了。不得不感谢一位精通sonata的好友相助。你需要使用sonata.admin.pool和继承模板。
我们模拟你已经创建了一个DemoAppBundle
1.创建一个src/Demo/AppBundle/Resources/views/standard_layout.html.twig继承sonataadmin模板,左边导航会出现自定义的导航链接
1 2 3 4 5 6 7 8 9 |
{% extends 'SonataAdminBundle::standard_layout.html.twig' %} {% block side_bar_nav %} {{ parent() }} <li> <a href="{{ path('demo_app_hello_index', {'name': 'World'}) }}"> Hello World! </a> </li> {% endblock %} |
2. 在config.yml启用这个文件
1 2 3 |
sonata_admin: templates: layout: DemoAppBundle::standard_layout.html.twig |
3.创建HelloController.php并写一个indexAction
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php namespace Demo\AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; /** * Class HelloController * @package Demo\AppBundle\Controller * * @Route("/admin/hello") */ class HelloController extends Controller { /** * @Route("/{name}") * @Template() */ public function indexAction($name) { $admin_pool=$this->get('sonata.admin.pool'); return array( 'admin_pool'=>$admin_pool, 'name' => $name ); } } |
4.创建相应的模板src/Demo/AppBundle/Resources/views/Hello/index.html.twig
1 2 3 4 5 6 7 |
{% extends 'DemoAppBundle::standard_layout.html.twig' %} {% block content %} Hello {{ name }}! {% endblock %} |
6. ok!你已经可以访问了
输入 http://XXXX.local/app_dev.php/admin/dashboard
你会发现左边导航的链接了