Search code examples
phpyiiyii-extensions

How to create new button in Yiibooster TBGridview


I'm using Yiibooster and the TbGridView to show some results. I'm also using the following code to provide smart looking icons to a view, update and delete link.

array(
    'htmlOptions' => array('nowrap'=>'nowrap'),
    'class'=>'bootstrap.widgets.TbButtonColumn',
    'viewButtonUrl'=>'Yii::app()->createUrl("/item/view", array("id"=>$data["id"], "sector" => $data["sector"]["slug"],"title" => $data["slug"]))',
    'updateButtonUrl'=>'Yii::app()->createUrl("/item/update", array("id"=>$data["id"]))',
    'deleteButtonUrl'=>null,
)

What I'd like to do is basically be able to show another button in there or in replace of the delete button. I'm just unsure how (or where specifically) I need to code the values for the this button.

I'm currently looking at the TbButtonColumn.php file and tried just adding a button just to see if it would work it didn't.

What would be the correct process to to do this?

Thanks in advance

Jonny


Solution

  • There is a buttons parameter for additional buttons, it is in docs od CButtonColumns, here is sample from link:

    array(
        'class'=>'CButtonColumn',
        // Template to set order of buttons
        'template' => '{postview} {preview}',
        // Buttons config
        'buttons' => array(
            'postview' => array(
                'label' => '...',     // text label of the button
                'url' => '...',       // the PHP expression for generating the URL of the button
                'imageUrl' => '...',  // image URL of the button. If not set or false, a text link is used
                'options' => array(...), // HTML options for the button tag
                'click' => '...',     // a JS function to be invoked when the button is clicked
            ),
            'preview' => array(
                // Another button config
            ),
        ),
    ),
    

    NOTE: This is example for CButtonColumn but TbButtonColumn is a subclass of CButtonColumn, so everything applies to both.