早上好,我在使用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'
);
任何人都知道这样做的方法吗?谢谢
答案 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'
);