protected function renderButton($name, $model, $key, $index)
    {
        if (!isset($this->buttons[$name])) {
            return '';
        }
        $button = $this->buttons[$name];

        if ($button instanceof \Closure) {
            $url = $this->createUrl($name, $model, $key, $index);
            return call_user_func($button, $url, $model, $key);
        }
        if (!is_array($button)) {
            throw new InvalidConfigException("Button should be either a Closure or array configuration.");
        }

        // Visibility :
        if (isset($button['visible'])) {
            if ($button['visible'] instanceof \Closure) {
                if (!call_user_func($button['visible'], $model, $key, $index)) {
                    return '';
                }
            } elseif (!$button['visible']) {
                return '';
            }
        }

        // URL :
        if (isset($button['url'])) {
            $url = call_user_func($button['url'], $name, $model, $key, $index);
        } else {
            $url = $this->createUrl($name, $model, $key, $index);
        }

        // label :
        if (isset($button['label'])) {
            $label = $button['label'];

            if (isset($button['encode'])) {
                $encodeLabel = $button['encode'];
                unset($button['encode']);
            } else {
                $encodeLabel = true;
            }
            if ($encodeLabel) {
                $label = Html::encode($label);
            }
        } else {
            $label = '';
        }

        // icon :
        if (isset($button['icon'])) {
            $icon = $button['icon'];
            $label = Html::icon($icon) . (empty($label) ? '' : ' ' . $label);
        }

        $options = array_merge(ArrayHelper::getValue($button, 'options', []), $this->buttonOptions);

        return Html::a($label, $url, $options);
    }
protected function renderButton($name, $model, $key, $index)
    {
        if (!isset($this->buttons[$name])) {
            return '';
        }
        $button = $this->buttons[$name];

        if ($button instanceof \Closure) {
            $url = $this->createUrl($name, $model, $key, $index);
            return call_user_func($button, $url, $model, $key);
        }
        if (!is_array($button)) {
            throw new InvalidConfigException("Button should be either a Closure or array configuration.");
        }

        // Visibility :
        if (isset($button['visible'])) {
            if ($button['visible'] instanceof \Closure) {
                if (!call_user_func($button['visible'], $model, $key, $index)) {
                    return '';
                }
            } elseif (!$button['visible']) {
                return '';
            }
        }

        // URL :
        if (isset($button['url'])) {
            $url = call_user_func($button['url'], $name, $model, $key, $index);
        } else {
            $url = $this->createUrl($name, $model, $key, $index);
        }

        // label :
        if (isset($button['label'])) {
            $label = $button['label'];

            if (isset($button['encode'])) {
                $encodeLabel = $button['encode'];
                unset($button['encode']);
            } else {
                $encodeLabel = true;
            }
            if ($encodeLabel) {
                $label = Html::encode($label);
            }
        } else {
            $label = '';
        }

        // icon :
        if (isset($button['icon'])) {
            $icon = $button['icon'];
            $label = Html::icon($icon) . (empty($label) ? '' : ' ' . $label);
        }

        $options = array_merge(ArrayHelper::getValue($button, 'options', []), $this->buttonOptions);

        return Html::a($label, $url, $options);
    }
protected function renderButton ( $ name , $ model , $ key , $ index ) { if ( ! isset ( $ this -> buttons [ $ name ] ) ) { return '' ; } $ button = $ this -> buttons [ $ name ] ; if ( $ button instanceof \ Closure ) { $ url = $ this -> createUrl ( $ name , $ model , $ key , $ index ) ; return call_user_func ( $ button , $ url , $ model , $ key ) ; } if ( ! is_array ( $ button ) ) { throw new InvalidConfigException ( "Button should be either a Closure or array configuration." ) ; } // Visibility : if ( isset ( $ button [ 'visible' ] ) ) { if ( $ button [ 'visible' ] instanceof \ Closure ) { if ( ! call_user_func ( $ button [ 'visible' ] , $ model , $ key , $ index ) ) { return '' ; } } elseif ( ! $ button [ 'visible' ] ) { return '' ; } } // URL : if ( isset ( $ button [ 'url' ] ) ) { $ url = call_user_func ( $ button [ 'url' ] , $ name , $ model , $ key , $ index ) ; } else { $ url = $ this -> createUrl ( $ name , $ model , $ key , $ index ) ; } // label : if ( isset ( $ button [ 'label' ] ) ) { $ label = $ button [ 'label' ] ; if ( isset ( $ button [ 'encode' ] ) ) { $ encodeLabel = $ button [ 'encode' ] ; unset ( $ button [ 'encode' ] ) ; } else { $ encodeLabel = true ; } if ( $ encodeLabel ) { $ label = Html :: encode ( $ label ) ; } } else { $ label = '' ; } // icon : if ( isset ( $ button [ 'icon' ] ) ) { $ icon = $ button [ 'icon' ] ; $ label = Html :: icon ( $ icon ) . ( empty ( $ label ) ? '' : ' ' . $ label ) ; } $ options = array_merge ( ArrayHelper :: getValue ( $ button , 'options' , [ ] ) , $ this -> buttonOptions ) ; return Html :: a ( $ label , $ url , $ options ) ; }
Renders button.
@param string $name button name.
@param mixed $model
@param string $key
@param integer $index
@return string rendered HTML
@throws InvalidConfigException on invalid button format.
Renders button .