gpt4 book ai didi

symfony - 如何在 SonataAdmin 中创建自定义 DataGrid 过滤器

转载 作者:行者123 更新时间:2023-12-04 13:02:00 27 4
gpt4 key购买 nike

我有一个带有许多状态代码的实体事务。
我希望用户能够在 SonataAdmin 中将这些状态代码视为字符串。用户还应该能够根据这些状态代码进行过滤。

Entity Transaction 
{
const TRANSACTION_STATUS_WAITING = 1;
const TRANSACTION_STATUS_PENDING = 2;
const TRANSACTION_STATUS_CONFIRMED = 3;

/**
* Set status
*
* @param smallint $status
*/
public function setStatus($status)
{
$this->status = $status;
}

/**
* Get status
*
* @return smallint
*/
public function getStatus()
{
return $this->status;
}

public function getStatusAsString()
{
switch($this->status){
case(self::TRANSACTION_STATUS_WAITING): return "Waiting for Merchant";
case(self::TRANSACTION_STATUS_PENDING): return "Pending Confirmation";
case(self::TRANSACTION_STATUS_CONFIRMED): return "Confirmed";
}
}
}

我已经像这样配置了我的奏鸣曲列表映射器:

protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('statusAsString', null, array('sortable' => true, 'label' => 'Status'))
}

这工作得很好:

但是我无法使用与过滤器相同的功能。

如果我试试这个:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('user')
->add('status') // Works well
->add('statusAsString', null, array('label' => 'Status')) // Doesn't work:
;
}

这不起作用。它给出了以下错误->
Notice: Undefined index: statusAsString in ..../Sonata\DoctrineORMAdminBundle\Guesser\FilterTypeGuesser.php 

我怎样才能让它工作?

最佳答案

这对我来说是一个临时解决方案。如果有人有更好的解决方案,请分享。

$datagridMapper
->add('status', 'doctrine_orm_string', array(),
'choice', array('choices' => Transaction::getStatusList())
);

在实体
public static function getStatusList()
{
return array(
self::TRANSACTION_STATUS_WAITING => "Waiting",
self::TRANSACTION_STATUS_PENDING_CONFIRMATION => "Pending Confirmation",
self::TRANSACTION_STATUS_CONFIRMED => "Confirmed",
self::TRANSACTION_STATUS_PAYMENT_REQUESTED => "Payment Requested",);
}

关于symfony - 如何在 SonataAdmin 中创建自定义 DataGrid 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com