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

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

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:
дефолт:
переводимый: есть
вялый: правда
вялый: правда
отметка времени: правда

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, массив $ 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 in base — потому что это публичный перевод — в примере для личных переводов существуют $ 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 Примечание: неопределенный индекс: foreignKey в $ em->getRepository ( ‘Gedmo \\ переводимые \\ \\ Перевод участия лица’);

3

Решение

Вот рабочий пример из моего текущего проекта, как использовать 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)

Форма продукта:

->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) }}

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]