我正在寻找将 KnplabsDoctrineBehaviors 与 SonataAdmin 一起使用的好方法。
在这个包的帮助下,我已经在奏鸣曲管理包中呈现了一个表单:https ://github.com/a2lix/TranslationFormBundle 它工作正常并正确添加了一个实体及其翻译。
要在奏鸣曲中列出实体,我从中找到了破解方法,但是当我在 Sonata-admin 的 listMapper 中将可排序属性添加到 Nom 时,它不起作用。
class Sport
{
use \Knp\DoctrineBehaviors\Model\Translatable\Translatable;
public function __call($method, $arguments)
{
return $this->proxyCurrentLocaleTranslation($method, $arguments);
}
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
// Need this method for the admin list template
public function getNom(){
return $this->translate()->getNom();
}
// Work even the precedent method not here, the proxy call work fine.
public function __toString(){
return $this->getNom();
}
}
class SportTranslation
{
use ORMBehaviors\Translatable\Translation;
/**
* @ORM\Column(type="string", length=255)
*/
protected $nom;
/**
* @return string
*/
public function getNom()
{
return $this->nom;
}
/**
* @param string
* @return null
*/
public function setNom($nom)
{
$this->nom = $nom;
}
}
当我尝试按 Nom 排序时,出现此错误:
Catchable Fatal Error: Argument 1 passed to
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::entityJoin()
must be of the type array, null given, called in
.../vendor/sonata-project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery.php
on line 140
and defined in
.../vendor/sonata-project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Datagrid/ProxyQuery.php
line 245
我想这是因为 Nom 不在 Sport 中,我不知道如何处理这个问题。