2014-11-25 4 views
1

Я установил свои объекты так же, как https://github.com/KnpLabs/DoctrineBehaviors#translatable. Также конфигурируется то же, что и http://a2lix.fr/bundles/translation-form/. Также я добавляю метод __call и пытаюсь реализовать How to print translatable data in sonata admin with DoctrineBehaviors from kpnlabs. Сначала я получаю ошибку, что $ name не существует в Category.php. Поэтому я добавляю его, теперь у меня есть ошибка: Neither the property "name" nor one of the methods "addName()"/"removeName()", "setName()", "name()", "__set()" or "__call()" exist and have public access in class. Вопрос в том, как они удаляют сеттеры/геттеры из главной сущности, для меня это вызвано ошибками. Может быть, у кого-то есть хорошая магия для всего этого?Knp DoctrineBehaviors + a2lix_translations + Sonata Admin

category.php

class MyClass 
{ 

    use \Knp\DoctrineBehaviors\Model\Translatable\Translatable; 

    private $name; //added after error 

    public function __call($method, $arguments) 
    { 
     return $this->proxyCurrentLocaleTranslation($method, $arguments); 
    } 

    public function getName() { 
     return $this->translate()->getName(); //added after error 
    } 

    #public function getName() { 
    # return ($this->getTranslations()); // also trying like this 
    #} 

    // ... 

CategoryTranslation.php

use Doctrine\ORM\Mapping as ORM; 
use Knp\DoctrineBehaviors\Model as ORMBehaviors; 

/** 
* CategoryTranslation 
*/ 
class CategoryTranslation 
{ 
    use ORMBehaviors\Translatable\Translation; 

    /** 
    * @var string 
    */ 
    private $name; 

    /** 
    * Set name 
    * 
    * @param string $name 
    * @return CategoryTranslation 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 
} 

В сонатной категории админ:

$formMapper->add('name', 'a2lix_translations'); 

Когда я добавил свою категорию (сообщение доступа) Я вижу в базе данных " имя "выглядит как

Doctrine\Common\Collections\[email protected] 

ответ

0

Удалить сеттеры и геттеры из основного класса, а затем doctrine:schema:update. Также в категории сонаты admin:

$formMapper->add('translations', 'a2lix_translations'); 
Смежные вопросы