форма перевода с переводами сущностей по умолчанию не найдена

я пытаюсь настроить форму переводов

http://a2lix.fr/bundles/translation-form/ и https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#translatable-entity-example

composer.json

    "a2lix/translation-form-bundle": "2.*@dev",
    "stof/doctrine-extensions-bundle": "1.2.*@dev",

config.yml

stof_doctrine_extensions: default_locale: en orm: default: translatable: true sluggable: true sluggable: true timestampable: true

a2lix_translation_form:
    locale_provider: default       # [1]
    locales: [pl, en, de]          # [1-a]
    default_locale: en
    manager_registry: doctrine      # [2]
    templating: "A2lixTranslationFormBundle::default.html.twig"

организация

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use APY\DataGridBundle\Grid\Mapping as GRID;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\Translatable\Translatable;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * @ORM\Table(name="c_Base"
    ,indexes={
 *      @ORM\Index(name="search_name", columns={"name"}),
 *      @ORM\Index(name="orderCity", columns={"city"})
 * })
 */
class Base  implements Translatable{

    /**
     * @ORM\Column(type="bigint")
     * @ORM\Id
     */
    private $id;

    /**
     * Hexaid
     * @var string
     */
    private $hid;

    /**
     * @ORM\Column(type="string")
     * @GRID\Column(title="name")
     * @Gedmo\Translatable
     * @var string
     */
    private $name;

    /**
     * @Gedmo\Locale
     * Used locale to override Translation listener`s locale
     * this is not a mapped field of entity metadata, just a simple property
     */
    private $locale;

строить форму

общедоступная функция buildForm (FormBuilderInterface $ builder, array $ options) {

    $builder

        ->add('translations', 'a2lix_translations', array(
                'fields'=>array(
                    'name'=>array(),
                    'description'=>array(
                        'field_type' => 'ckeditor'
                    )
                )
            )
        );

ошибка

Neither the property "translations" nor one of the methods "getTranslations()", "translations()", "isTranslations()", "hasTranslations()", "__get()" exist and have public access in class "Mea\CharterBundle\Entity\Base".

у меня нет частных переводов $; var в базе - потому что это общедоступный перевод - например, для личных переводов существуют $ translations https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#personal-translations

но для https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#translatable-entity-example нет.

Могу ли я использовать его в http://a2lix.fr/bundles/translation-form/ ?

вот другой пример способа DoctrineExtensions Notice: Undefined index: foreignKey в $ em- ›getRepository ('Gedmo \\ Translatable \\ Entity \\ Translation');


person Developer    schedule 16.05.2015    source источник
comment
DoctrineExtensions от Atlantic18 сложнее использовать, лучше используйте DoctrineExtensions от KNP .. Я могу показать пример, если хотите.   -  person xurshid29    schedule 16.05.2015
comment
покажите пример, пожалуйста, возможно, я изменил, я потерял много времени - я вернулся к более старой версии Atlantic18, и она работает, но иногда генерирует неопределенный индекс: foreignKey   -  person Developer    schedule 16.05.2015
comment
если у вас есть интересный пример да. У него есть какое-то расширение формы для редактирования переводов?   -  person Developer    schedule 16.05.2015


Ответы (1)


Вот рабочий пример из моего текущего проекта, как использовать DoctrineExtension от KNP (я знаю, что это не отвечает на вопрос, посмотрите комментарии выше).

composer.json:

"knplabs/doctrine-behaviors": "dev-master",
"a2lix/translation-form-bundle" : "dev-master"

config.yml:

imports:
    ...
    - { resource: ../../vendor/knplabs/doctrine-behaviors/config/orm-services.yml }

framework:
    translator:
        fallback: "%locale%"
    ...

a2lix_translation_form:
    locale_provider: default
    locales: [ru, en]
    default_locale: ru
    required_locales: [ru]
    manager_registry: doctrine
    templating: "@SLCore/includes/translation.html.twig" # if you want to use your own template 

Сущности: Продукт

use Knp\DoctrineBehaviors\Model\Translatable\Translatable;

class Product
{
    use Translatable;

    // other fields which should not be translated
    // $translations field alredy has been created and mapped by DE

ProductTranslation (DE требует этого объекта):

use Knp\DoctrineBehaviors\Model\Translatable\Translation;

class ProductTranslation
{
    use Translation;

    // fields that should be translated
    // e.g. $title, $description (id, locale, translatable fields already have been created by Translation trait, mapped by DE)

Форма ProductType:

->add('translations', 'a2lix_translations', [/* other options go here */])

form.html.twig:

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript" src="{{ asset('bundles/a2lixtranslationform/js/a2lix_translation_bootstrap.js') }}"></script>
{% endblock %}

...

{{ form_widget(form.translations) }}

Я знаю, что это не интересный пример, но он работает.

person xurshid29    schedule 16.05.2015
comment
Спасибо, что этот пример хорош для меня, я не был уверен в a2lix_translations, как вы показываете, что он работает с KNP - person Developer; 18.05.2015