symfony2组件sonata常用小技巧
一 、布尔类型在sonata中显示成自定义汉字(是/否)
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add(“bool_name“ (//布尔类型变量名), 'doctrine_orm_callback', array(
'callback' => function ($queryBuilder, $alias, $field, $value) {
/* @var $queryBuilder QueryBuilder */
if ($value['value'] == 1) { (//此处1,2为自定义表示布尔值的,可自行设置)
$queryBuilder->andWhere($queryBuilder->expr()->eq($alias.'.isSalesperson', 1));
return true;
} elseif ($value['value'] == 2) {
$queryBuilder->andWhere($alias.".isSalesperson IS NULL OR ".$alias.'.isSalesperson = 0');
return true;
}
},
'field_type' => 'choice',
'field_options' => array(
'choices' => array(1 => '是', 2 => '否'),
),
'label' => '是否为销售人员'
));
}
二、sonata更改过滤时间。
protected function configureDatagridFilters(DatagridMapper $datagridMapper) {
$datagridMapper
->add('createdAtFrom', 'doctrine_orm_callback', array(
'label' => '开始时间',
'callback' => function($queryBuilder, $alias, $field, $value) {
if (empty($value['value'])) {
return;
}
$start_date = $value['value'];
$queryBuilder->andWhere($alias . '.created >= :start');
$queryBuilder->setParameter('start', $start_date);
$queryBuilder->orderBy('o.id', 'DESC');
return true;
},
), 'sonata_type_date_picker', array('format' => 'y-M-d')
)
;
$datagridMapper
->add('createdAtTo', 'doctrine_orm_callback', array(
'label' => '结束时间',
'callback' => function($queryBuilder, $alias, $field, $value) {
if (empty($value['value'])) {
return;
}
$end_date = $value['value'];
$queryBuilder->andWhere($alias . '.created <= :end');
$queryBuilder->setParameter('end', $end_date);
$queryBuilder->orderBy('o.id', 'DESC');
return true;
},
), 'sonata_type_date_picker', array('format' => 'y-M-d')
)
;
}
//createdAtFrom 时间开始变量名
//createdAtTo 时间结束变量名