2
奏鸣曲管理束文档看起来很稀缺,我没有找到实现此目的的方法。奏鸣曲管理自定义列表字段(不是来自实体)
目标:在字段列表中显示布尔值。应该为其他属性的每个对象计算价值。
我设法实现这个为datagridFilter为doctrine_orm_callback
但不是listFields。
工作代码configureDatagridFilters()
:
// LicenceAdmin.php
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add('isValid', 'doctrine_orm_callback', [
'callback' => [$this, 'isValidFilterCallback'],
'field_type' => 'checkbox',
]);
}
public function isValidFilterCallback($queryBuilder, $alias, $field, $value)
{
// if no value or value == false means unchecked checkbox - show all instances
if (!$value || empty($value['value'])) {
return;
}
// if checked, display only by active logic
$dateNow = new \DateTime();
$queryBuilder
->andWhere("{$alias}.isActive = 1")
->andWhere("{$alias}.validFrom <= :date")
->andWhere("{$alias}.validTo > :date")
->setParameter('date', $dateNow)
;
}
问题
- 我这将如何实现这为
configureListFields()
?尝试了几种使用configureDatagridFilters()中的相同逻辑但没有成功的方法。 这可能没有queryBuilder和DQL?我宁愿使用实体对象及其属性来表示逻辑。喜欢的东西:
protected function configureListFields(ListMapper $listMapper) { $listMapper->add('isValid', 'callback', [ 'callback' => function($object) { <-- IMAGINARY FUNCTIONALITY if ($object->getIsValid()) return true; else return false; } ]); }
你是对的。我不敢相信我没有想到:) – 2014-11-19 17:11:12
如果您的业务逻辑需要依赖关系,这不是一个好的解决方案。 – 2016-10-10 16:00:04