Sonata Admin 列表自定义查询 ListMapper sonata_type_model 字段
Sonata Admin list custom query for ListMapper sonata_type_model field
我尝试获取一些与我的所有步骤对象匹配的条目,但它们之间没有直接关系,因此我需要使用自定义查询。
我在我的管理员中尝试过 class :
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('texteEtape', null, array('label' => $this->getTranslator()->trans('label.step.text')));
$this->addCountryListMap($listMapper);
$listMapper
->addIdentifier('id')
->add('temperature')
->add('rincage', null, array('label' => $this->getTranslator()->trans('label.rinsing')))
->add('concentration')
->add('temps', null, array('label' => $this->getTranslator()->trans('label.time')))
->add('produit', null, array('label' => $this->getTranslator()->trans('label.product')))
->add('enabled', null, array('editable' => true))
->add('_action', 'actions', array(
'actions' => array(
'edit' => array(),
'delete' => array()
)
))
->add('updatedAt')
->add('Protocols','sonata_type_model', array('required' => true,
'class'=> 'HypredMainBundle:Protocole','property'=> 'name',
'query_builder' => $this->getProtocoles($listMapper->get('id'))));
getProtocoles 函数:
private function getProtocoles($id) {
$querybuilder = $this->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);
var_dump($querybuilder->getQuery()->getResult());
die();
return $querybuilder;
}
我想知道如何同时传递当前实体 ID(标识符 return 一个 FieldDescription 对象)。
可能是我遗漏了什么什么的,希望我的post是全面的。
提前感谢您的宝贵时间。
我认为您尝试过的方法行不通。
我会尝试为 Protocols 属性定义自定义模板
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('Protocols','string', array('template' => 'HypredMainBundle:Protocole:list_protocole.html.twig'))
;
}
里面有对象和它的id
{{ object.id | protocols() }}
比我写一个 Twig Extension
class AppExtension extends \Twig_Extension
{
protected $container;
public function __constructor($container)
{
// remember to pass @service_container defining a twig extension service
$this->container = $container;
}
public function getFilters()
{
return array(
new \Twig_SimpleFilter('protocols', array($this, 'protocolsFilter')),
);
}
public function ProtocolsFilter($id)
{
// content of getProtocoles() function from question
$querybuilder = $this->container->get('doctrine')->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);
var_dump($querybuilder->getQuery()->getResult());
die();
return $querybuilder;
}
public function getName()
{
return 'app_extension';
}
}
我尝试获取一些与我的所有步骤对象匹配的条目,但它们之间没有直接关系,因此我需要使用自定义查询。
我在我的管理员中尝试过 class :
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('texteEtape', null, array('label' => $this->getTranslator()->trans('label.step.text')));
$this->addCountryListMap($listMapper);
$listMapper
->addIdentifier('id')
->add('temperature')
->add('rincage', null, array('label' => $this->getTranslator()->trans('label.rinsing')))
->add('concentration')
->add('temps', null, array('label' => $this->getTranslator()->trans('label.time')))
->add('produit', null, array('label' => $this->getTranslator()->trans('label.product')))
->add('enabled', null, array('editable' => true))
->add('_action', 'actions', array(
'actions' => array(
'edit' => array(),
'delete' => array()
)
))
->add('updatedAt')
->add('Protocols','sonata_type_model', array('required' => true,
'class'=> 'HypredMainBundle:Protocole','property'=> 'name',
'query_builder' => $this->getProtocoles($listMapper->get('id'))));
getProtocoles 函数:
private function getProtocoles($id) {
$querybuilder = $this->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);
var_dump($querybuilder->getQuery()->getResult());
die();
return $querybuilder;
}
我想知道如何同时传递当前实体 ID(标识符 return 一个 FieldDescription 对象)。
可能是我遗漏了什么什么的,希望我的post是全面的。
提前感谢您的宝贵时间。
我认为您尝试过的方法行不通。
我会尝试为 Protocols 属性定义自定义模板
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('Protocols','string', array('template' => 'HypredMainBundle:Protocole:list_protocole.html.twig'))
;
}
里面有对象和它的id
{{ object.id | protocols() }}
比我写一个 Twig Extension
class AppExtension extends \Twig_Extension
{
protected $container;
public function __constructor($container)
{
// remember to pass @service_container defining a twig extension service
$this->container = $container;
}
public function getFilters()
{
return array(
new \Twig_SimpleFilter('protocols', array($this, 'protocolsFilter')),
);
}
public function ProtocolsFilter($id)
{
// content of getProtocoles() function from question
$querybuilder = $this->container->get('doctrine')->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);
var_dump($querybuilder->getQuery()->getResult());
die();
return $querybuilder;
}
public function getName()
{
return 'app_extension';
}
}