Sonata管理员无法通过可排序

时间:2018-02-12 16:40:38

标签: php symfony translation sonata-admin

我尝试使用Gedmo配置翻译,但我之前启用的可排序行为似乎有所不同:

  

在渲染模板期间抛出异常(" The   class' Sonata \ TranslationBundle \ Model \ AbstractTranslatable'不是   在链配置的命名空间Gedmo \ Translatable \ Entity中找到,   Gedmo \ Translator \ Entity,Gedmo \ Loggable \ Entity,Gedmo \ Tree \ Entity,   AppBundle \ Entity,Vich \ UploaderBundle \ Entity,   Sonata \ MediaBundle \ Entity,Application \ Sonata \ MediaBundle \ Entity,   Sonata \ UserBundle \ Entity,Application \ Sonata \ UserBundle \ Entity,   Sonata \ NewsBundle \ Entity,Sonata \ ClassificationBundle \ Entity,   应用\索纳塔\ NewsBundle \实体,   应用\索纳塔\ ClassificationBundle \实体,   FOS \ UserBundle \模型"。)

抛出此异常的模板是为处理可排序按钮而配置的模板:

/Pix/SortableBehaviorBundle/Resources/views/Default/_sort.html.twig (line 3) 

它在尝试设置last_position(对象)

的第3行失败
{% if admin.isGranted('EDIT', object) and admin.hasRoute('edit') %}
    {% set current_position = currentObjectPosition(object) %}
    {% set last_position    = lastPosition(object) %}
    {% set enable_top_bottom_buttons = field_description.options.actions.move.enable_top_bottom_buttons ?? true %}
    {% if enable_top_bottom_buttons and current_position < last_position %}
        <a class="btn btn-sm btn-default" href="{{ admin.generateObjectUrl('move', object, {'position': 'bottom'}) }}" title="{{ 'move_to_bottom'|trans }}">
            <i class="fa fa-angle-double-down"></i>

我正在关注此翻译教程: https://sonata-project.org/bundles/translation/master/doc/reference/orm.html

Doctrine ORM Mappings:

  orm:
    auto_generate_proxy_classes: '%kernel.debug%'
    entity_managers:
      default:
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
          gedmo_translatable:
            type: annotation
            prefix: Gedmo\Translatable\Entity
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
            alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
            is_bundle: false
          gedmo_translator:
            type: annotation
            prefix: Gedmo\Translator\Entity
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
            alias: GedmoTranslator # (optional) it will default to the name set for the mapping
            is_bundle: false
          gedmo_loggable:
           type: annotation
           prefix: Gedmo\Loggable\Entity
           dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
           alias: GedmoLoggable # (optional) it will default to the name set for the mapping
           is_bundle: false
          gedmo_tree:
            type: annotation
            prefix: Gedmo\Tree\Entity
            dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
            alias: GedmoTree # (optional) it will default to the name set for the mapping
            is_bundle: false

转发 doctrine:mapping:info

 Found 36 mapped entities:

 [OK]   Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation
 [OK]   Gedmo\Translatable\Entity\Translation
 [OK]   Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation
 [OK]   Gedmo\Translator\Entity\Translation
 [OK]   Gedmo\Loggable\Entity\MappedSuperclass\AbstractLogEntry
 [OK]   Gedmo\Loggable\Entity\LogEntry
 [OK]   Gedmo\Tree\Entity\MappedSuperclass\AbstractClosure
 [OK]   AppBundle\Entity\TeamBio
 [OK]   AppBundle\Entity\User
 [OK]   AppBundle\Entity\NewsItemSource
 [OK]   AppBundle\Entity\NewsItem
 [OK]   AppBundle\Entity\NewsItemTranslation
 [OK]   Sonata\MediaBundle\Entity\BaseMedia
 [OK]   Sonata\MediaBundle\Entity\BaseGallery
 [OK]   Sonata\MediaBundle\Entity\BaseGalleryHasMedia
 [OK]   Application\Sonata\MediaBundle\Entity\GalleryHasMedia
 [OK]   Application\Sonata\MediaBundle\Entity\Gallery
 [OK]   Application\Sonata\MediaBundle\Entity\Media
 [OK]   Sonata\UserBundle\Entity\BaseUser
 [OK]   Sonata\UserBundle\Entity\BaseGroup
 [OK]   Application\Sonata\UserBundle\Entity\Group
 [OK]   Application\Sonata\UserBundle\Entity\User
 [OK]   Sonata\NewsBundle\Entity\BaseComment
 [OK]   Sonata\NewsBundle\Entity\BasePost
 [OK]   Sonata\ClassificationBundle\Entity\BaseTag
 [OK]   Sonata\ClassificationBundle\Entity\BaseCollection
 [OK]   Sonata\ClassificationBundle\Entity\BaseCategory
 [OK]   Sonata\ClassificationBundle\Entity\BaseContext
 [OK]   Application\Sonata\NewsBundle\Entity\Comment
 [OK]   Application\Sonata\NewsBundle\Entity\Post
 [OK]   Application\Sonata\ClassificationBundle\Entity\Collection
 [OK]   Application\Sonata\ClassificationBundle\Entity\Category
 [OK]   Application\Sonata\ClassificationBundle\Entity\Tag
 [OK]   Application\Sonata\ClassificationBundle\Entity\Context
 [OK]   FOS\UserBundle\Model\Group
 [OK]   FOS\UserBundle\Model\User

2 个答案:

答案 0 :(得分:1)

确认您已在AppKernel.php(symfony 2/3)或bundles.php(symfony 4)中加载了SonataTranslationBundle。

确认您已在symfony配置中启用了gedmo扩展程序:

sonata_translation:
    gedmo:
        enabled: true

答案 1 :(得分:0)

对于目录&#34; sonata-project / translation-bundle / src / Model&#34;它看起来像奏鸣曲翻译s doctrine entity mapping ;不见了。 尝试明确添加它:

mappings:
    MyAdditionalSonataMapping:
              mapping: true
              type: annotation
              dir: "%kernel.root_dir%/../vendor/sonata-project/translation-bundle/src/Model"
              alias: 'Sonata\TranslationBundle\Model'
              prefix: 'Sonata\TranslationBundle\Model'
              is_bundle: false