簡體   English   中英

如何在Sonata Admin Bundle中的數據網格關系中獲取NULL作為選項?

[英]How to get NULL as an option in a datagrid relation in sonata admin bundle?

我將以下內容添加到了Sonata管理員中,以便按類別進行過濾。 但是,列表沒有顯示NULL作為類別的選項。 我還希望能夠按類別過濾類別為NULL而不是實體的類別。

一個人怎么能做到這一點? 我當前的配置:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add("category");
}

嘗試這個:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add("category", 'doctrine_orm_callback', array(
        'callback' => function ($queryBuilder, $alias, $field, $value) {
                /**
                 * @var QueryBuilder $queryBuilder
                 */
                if ($value['value']) {
                    if ($value['value'] == 0) {
                        $queryBuilder->andWhere($queryBuilder->expr()->isNull($alias.'.category'));
                        return true;
                    } else {
                       $category = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager')->getReference('AcmeBundle:Category', $value['value']);
                       $queryBuilder->andWhere($queryBuilder->expr()->eq($alias.'.category', $category));
                        return true;
                    }
                }
            },
        'field_type' => 'choice',
        'field_options' => array(
            'choices' => $this->getCategoryChoices()        
        ),
        'label' => 'Category'
    ));
}

private function getCategoryChoices()
{
    $categories = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager')->getRepository('AcmeBundle:Category')->findAll();

    $choices["0"] = "NULL";
    foreach($categories as $category) {
         $choices["{$category->getId()}"] = $category->getName();
    }

    return $choices;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM