如何在admin类中将函数作为参数传递

时间:2015-06-09 09:36:18

标签: php mongodb symfony sonata-admin

早上好,我在使用sonata admin bundle时遇到了一些问题,让我假设我有一个返回String的函数,我想把这个函数的结果作为参数传递给datagrid:类似:

protected $datagridValues = array (
'email' => array ('type1' => 2, 'value' => function()), // type 2 : >
'_page' => 1, // Display the first page (default = 1)
'_sort_by' => 'id' 
);

任何人都知道这样做的方法吗?谢谢

3 个答案:

答案 0 :(得分:1)

问题是

中的function()
'email' => array ('type1' => 2, 'value' => function())

传递正确的var,它会起作用。

'email' => array ('type1' => 2, 'value' => 'myValue')

编辑

要在参数中传递函数(名为回调函数),您必须在参数中传递回调名称,然后使用call_user_func运行它:

function mycallback(){
    // do things
}

protected $datagridValues = array (
    'email' => array ('type1' => 2, 'value' => 'mycallback')
    '_page' => 1,
    '_sort_by' => 'id' 
);

然后你可以在你的剧本中做到:

call_user_func($datagridValues['email']['value']);

答案 1 :(得分:1)

您可以覆盖getFilterParameters()方法来更改$datagridValues

public function getFilterParameters()
{
    $this->datagridValues = array_merge(array(
            'email' => array ('type1' => 2, 'value' => function()),
        ), $this->datagridValues);

    return parent::getFilterParameters();
}

答案 2 :(得分:-1)

在数组中你不能调用函数.. 你可以这样做。

$var = function_name();

protected $datagridValues = array (
'email' => array ('type1' => 2, 'value' => $var), // type 2 : >
'_page' => 1, // Display the first page (default = 1)
'_sort_by' => 'id' 
);