找不到具有默认实体翻译的翻译表格 [英] translation-form with default entity translations not found
问题描述
我尝试设置翻译表格
http://a2lix.fr/bundles/translation-form/和 https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#translatable-entity-example
composer.json
composer.json
"a2lix/translation-form-bundle": "2.*@dev",
"stof/doctrine-extensions-bundle": "1.2.*@dev",
config.yml
config.yml
stof_doctrine_extensions: default_locale:zh orm: 默认: 可翻译:true 慢跑:真实 慢跑:真实 时间戳记:true
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,数组$ options) {
public function 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".
我没有私人的$ translations; var为基数-因为是公共翻译-例如存在个人翻译$ translations https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#personal-translations
i dont't have private $translations; var in base - because is public translation - in example for personal translations exist $translations https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#personal-translations
我可以在 http://a2lix.fr/bundles/translation-form/?
here is other way example DoctrineExtensions Notice: Undefined index: foreignKey in $em->getRepository('Gedmo\\Translatable\\Entity\\Translation');
推荐答案
这是我当前项目中的工作示例,如何使用KNP的DoctrineExtension(我知道这不能回答问题,请看上面的评论).
Here is the working example from my current project how to use DoctrineExtension from KNP (I know this doesn't answer the question, look at the comments above).
composer.json:
composer.json:
"knplabs/doctrine-behaviors": "dev-master",
"a2lix/translation-form-bundle" : "dev-master"
config.yml:
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需要此实体):
ProductTranslation (DE requires this entity):
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形式:
ProductType form:
->add('translations', 'a2lix_translations', [/* other options go here */])
form.html.twig:
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) }}
我知道这不是一个有趣的示例,但是它可以工作.
I know this is not an interesting example, but it works.
这篇关于找不到具有默认实体翻译的翻译表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!