Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sonata admin can't get translation to work with sortable

I'm trying to configure translations using Gedmo, but Sortable behaviour I've enabled earlier seems to be getting in a way:

An exception has been thrown during the rendering of a template ("The class 'Sonata\TranslationBundle\Model\AbstractTranslatable' was not found in the chain configured namespaces 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, Application\Sonata\NewsBundle\Entity, Application\Sonata\ClassificationBundle\Entity, FOS\UserBundle\Model").

The template throwing this exception is the one configured for handling of sortable buttons:

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

It fails on line 3 where it's attempting on setting last_position(object)

{% 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>

I'm following this translation tutorial: 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

Dump of 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
like image 759
Radek Avatar asked Feb 12 '18 16:02

Radek


1 Answers

Verify that you have loaded the SonataTranslationBundle in your AppKernel.php (symfony 2/3) or in your bundles.php (symfony 4).

Verify that you have enabled the gedmo extension in your symfony config:

sonata_translation:
    gedmo:
        enabled: true
like image 155
magnetik Avatar answered Oct 16 '22 11:10

magnetik