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