symfony2组件sonata常用小技巧(Doctrine数据库映射)

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     时间结束变量名

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值