如何将元素放入左侧菜单 sonataadmin

How to put elements to left menu sonataadmin

我正在尝试解决我在 Symfony 2 sonata Admin 中遇到的 2 个问题。 首先,我无法通过左侧菜单放置我的服务元素,我在主仪表板视图中有它,但我不知道如何放置它,也无法在存储库中找到它 Screenshot

我的目录class

<?php
namespace AdminBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Show\ShowMapper;

class CatalogAdmin extends  Admin
{
    protected $baseRouteName = 'admin_category';
    protected $baseRoutePattern = 'category';

    protected function configureFormFields(FormMapper $formMapper)
    {
        $categoryFieldOptions = array('multiple'=>true);
        $formMapper
            ->add('name')
            ->add('parent_id','sonata_type_model',$categoryFieldOptions)
            ->add('alias')
            ;
    }


    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('id')
            ->add('name')
            ->add('parent_id')
            ->add('alias')


            ->add('_action','actions',array(
               'actions'=>array(
                   'show'=>array(),
                   'edit'=>array(),
               )
            ));
    }
    }

和服务:

services:
    sonata.admin.categoryedit:
        class: AdminBundle\Admin\CatalogAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Category", label: "Kategoria" , show_in_dashboard: "true" }
        arguments:
            - ~
            - AdminBundle\Entity\Category
            - ~
        calls:
            - [ setTranslationDomain, [AdminBundle]]

和配置文件(仅导入标签:):

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: @AdminBundle/Resources/config/admin.yml}

我的第二个问题是,当我尝试单击任何内容时出现错误:

No entity manager defined for class AdminBundle\Entity\Category

如何解决该问题? 最好的问候

21.01.2014 我在 config.yml 中创建了错误以查看错误消息

at Processor->processConfiguration(object(Configuration), array(array('title' => 'NewProject', 'title_logo' => '/bundles/sonataadmin/logo_title.png', 'dashboard' => array('blocks' => array(array('position' => 'left', 'type' => 'sonata.admin.block.admin_list')), 'groupsa' => array('admin.category' => array('label' => 'Kategorie', 'items' => array('sonata.admin.categoryedit'), 'roles' => array('ROLE_ADMIN'))))))) in SonataAdminExtension.php line 78

我可以看到我的商品的标签 sonata.admin.categoryedit 没有任何位置或其他东西,可以吗?也许我应该改变一些东西?

你可以在配置中定义它。我建议查看完整配置

http://sonata-project.org/bundles/admin/master/doc/reference/configuration.html

左侧菜单中与 link 相关的配置是:

 sonata_admin:
      dashboard:
           groups:
               name.of.your.first.level.of.menu:
                   label: name_of_item_here
                   items:
                        - sonata.admin.categoryedit
                        - another_service_name1
                        - another_service_name2

项目将显示为 links 由 name_of_item_here

组成的菜单

问候实体经理,我不确定,但请尝试将此行添加到您的配置中

 sonata_doctrine_orm_admin:
   # default value is null, so doctrine uses the value defined in the configuration
      entity_manager: ~

sonata_doctrine_orm_admin 的级别与 sonata_admin 相同(我指的是 yml 中的级别)

关于 {% if app.security.token and is_granted('ROLE_SONATA_ADMIN') %} :

您是否尝试输出此条件并检查它是否真的验证为真?

我的意思是在此比较之前添加诸如 COMPARISON_RESULT:{{ app.security.token 和 is_granted('ROLE_SONATA_ADMIN') }} 之类的内容?

或者只是试着在里面放一些文字?只是为了检查它是否进入内部?

好的伙计们,问题解决了。 我没有通过数据库向我的用户授予管理员权限,所以这是一个非常严重的错误 ;)