【问题标题】:Symfony2 Sonata admin setting query for sonata_type_collectionSymfony2 Sonata 管理员设置查询 sonata_type_collection
【发布时间】:2015-11-23 13:04:49
【问题描述】:

是否可以为 sonata_type_collection 设置查询?例如我现在就这样做......

        ->add('deal', 'sonata_type_collection',
            array(

                'required' => true,
                'label' => 'product',
            ),
            array(
                'property' => 'product',
                'edit' => 'inline',
                'inline' => 'table',

            ))

这很好用,但是我在集合中显示的交易有状态...而且我只想显示状态设置为 true 的交易...我该怎么做?我可以设置收集查询吗?

问题是我可以做到:

        ->add('deal', null, array(
            'by_reference' => false,
            'class' => 'Mp\ShopBundle\Entity\DailyDeal',
            'query_builder' => $this->modelManager->createQuery('Mp\ShopBundle\Entity\DailyDeal', 'h')
                ->where('h.status = 1'),
        ), array(
            'edit' => 'inline',
            'inline' => 'table',
        ))

这样,如果选择多个交易,它会保存在一个数组中...我想为我选择的每个交易创建一个单独的对象。就像 sonata_type_collection 一样..

我能做什么?

【问题讨论】:

    标签: php symfony sonata-admin


    【解决方案1】:

    我知道的唯一方法是在您的实体中创建一个属性和吸气剂,只返回您想要的值并在您的管理类中使用它。

    Entity.php

    use Doctrine\ORM\Mapping as ORM;
    use Doctrine\Common\Collections\ArrayCollection;
    
    class Entity
    {
       /**
        * @ORM\OneToMany(targetEntity="XXX")
        */
        private $dealsActivated;
    
        public function getDealsActivated()
        {
             $collection = new ArrayCollection();
             foreach ($this->getDeal() as $deal) {
                 if ($deal->getStatus() === 1) {
                     $collection->add($deal);
                 }
             }
    
             return $collection;
        }
    }
    

    Admin.php

    ->add('dealsActivated', 'sonata_type_collection',
        array(
    
            'required' => true,
            'label' => 'product',
        ),
        array(
            'property' => 'product',
            'edit' => 'inline',
            'inline' => 'table',
    
        )
    )
    

    它没有经过优化,但适用于 Sonata。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2016-06-30
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多