1

https://github.com/KnpLabs/DoctrineBehaviors#translatableと同じエンティティをセットアップしました。また、 http://a2lix.fr/bundles/translation-form/と同じ構成。また、__call メソッドを追加して、 kpnlabs の DoctrineBehaviors を使用して Sonata admin で翻訳可能なデータを印刷する方法を実装しようとしました。まず、Category.php に $name が存在しないというエラーが表示されます。だから私はそれを追加します、今私はエラーがあります: Neither the property "name" nor one of the methods "addName()"/"removeName()", "setName()", "name()", "__set()" or "__call()" exist and have public access in class. 問題は、メイン エンティティからセッター/ゲッターを削除する方法です。私にとっては、エラーが発生しました。たぶん、誰かがこれらすべてに適切な魔法を持っているのでしょうか?

カテゴリ.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\ArrayCollection@000000006cb11474000000002980d54f
4

1 に答える 1

0

次に、メイン クラスからセッターとゲッターを削除しdoctrine:schema:updateます。また、ソナタ カテゴリの管理者:

$formMapper->add('translations', 'a2lix_translations');
于 2014-11-26T09:54:38.697 に答える