自定义Yii2网格ActionButton

时间:2016-07-02 14:11:18

标签: yii2

我已经创建了一段代码,用于生成我需要包含在yii2 Grid ActionColumn中的dinamically按钮。使用此功能,我可以定义一个按钮,只需指定一个参数数组:

  • 名称
  • controller(destination)
  • 图标

功能非常好,但我不能替换静态字符串"我的名字"使用我的变量$ config [' icon']因为我无法将值发送给函数。

我可以解决这个问题吗? (我使用Kartik网格扩展)

foreach(...) {
  $actionColumns['controller'] = $config['controller'];
  $actionColumns['buttons']    = array($config['name'] => function ($url, $model, $key) {
                                                        return Html::a('my name', $url);
                                                    });
  $actionColumns['template']   = '{'.$config['name'].'}';
}

1 个答案:

答案 0 :(得分:1)

我认为你可以通过use来传递值来关闭

 function ($url, $model, $key)   use  ($config['icon']) 
 {
   .....
 }

所以在你的情况下

foreach(...) {
   $actionColumns['controller'] = $config['controller'];
   $actionColumns['buttons']    = array($config['name'] => 
          function ($url, $model, $key) use  ($config['icon']) {
                  return Html::a($config['icon'], $url);
          });
   $actionColumns['template']   = '{'.$config['name'].'}';
}