我运行此代码来获取我的选择控件,它运行正常。
$builder
->add('access', 'entity', array(
'label' => 'Behörigheter',
'multiple' => true, // Multiple selection allowed
'expanded' => true, // Render as checkboxes
'property' => 'name',
'class' => 'BizTV\ContainerManagementBundle\Entity\Container',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) {
$qb = $er->createQueryBuilder('a');
$qb->innerJoin('a.containerType', 'ct');
$qb->where('a.containerType IN (:containers)', 'a.company = :company');
$qb->setParameters( array('containers' => array(1,2,3,4), 'company' => $company) );
$qb->orderBy('ct.id', 'ASC');
return $qb;
}
));
现在我希望能够为复选框自定义标签,我前几天才知道通过将属性更改为select_label并在实体中定义该功能可以实现此目的,但是使用此查询它不起作用
这是因为我加入了吗?有没有办法实现它?
这是无效的代码
$builder
->add('access', 'entity', array(
'label' => 'Behörigheter',
'multiple' => true, // Multiple selection allowed
'expanded' => true, // Render as checkboxes
'property' => 'select_label',
'class' => 'BizTV\ContainerManagementBundle\Entity\Container',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) {
$qb = $er->createQueryBuilder('a');
$qb->innerJoin('a.containerType', 'ct');
$qb->where('a.containerType IN (:containers)', 'a.company = :company');
$qb->setParameters( array('containers' => array(1,2,3,4), 'company' => $company) );
$qb->orderBy('ct.id', 'ASC');
return $qb;
}
));
在我拥有的实体中:
public function getSelectLabel()
{
return $this->name . ' (' . $this->parent->getName() . ')';
}
它适用于另一个具有SELECT(单选)控件的表单,但不适用于此...
我得到的错误是
致命错误:在第190行的/var/www/biztv_symfony/src/BizTV/ContainerManagementBundle/Entity/Container.php中的非对象上调用成员函数getName()
答案 0 :(得分:0)
哦对不起伙计们,我有一些没有$ this->父级定义的对象,我重写了我的名字功能如下,它运行正常。
public function getSelectLabel()
{
if (isset($this->parent)) {
return $this->name . ' (' . $this->parent->getName() . ')';
}
else {
return $this->name;
}
}
全部谢谢!