YiiのCGridViewを利用した際に、データごとに表示される、view、update、deleteボタンの順番を変更したり、ボタンを削除したり、新規に追加する方法です。
giiで作成したばかりのadmin.phpにあるCGridViewは以下のような感じになっていると思います。(Yii-bootstrapを利用しているので微妙に違うと思いますが)
<?php $this->widget('bootstrap.widgets.TbGridView',array( 'id'=>'contact-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'id', 'title', 'created', array( 'class'=>'bootstrap.widgets.TbButtonColumn', ), ), )); ?>
例えば、deleteボタンを削除したい場合は、
<?php $this->widget('bootstrap.widgets.TbGridView',array( 'id'=>'contact-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'id', 'title', 'created', array( 'class'=>'bootstrap.widgets.TbButtonColumn', 'template'=>'{view} {update}', ), ), )); ?>
のように
'template'=>'{view} {update}',
の行を追加するとよいです。
updateなどのデフォルトのボタンを押した後の処理を変更したい場合や、他の処理ボタンを追加したい場合は、
<?php $this->widget('bootstrap.widgets.TbGridView',array( 'id'=>'contact-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'id', 'title', 'created', array( 'class'=>'bootstrap.widgets.TbButtonColumn', 'template'=>'{view} {update} {delete} {user} {suspend}', 'buttons'=>array( 'user' => array( 'label'=>'ユーザ確認', 'icon'=>'user', 'url'=>'Yii::app()->createUrl("user/view", array("id"=>$data->id))', ), 'update' => array( 'label'=>'更新', 'icon'=>'pencil', 'url'=>'Yii::app()->createUrl("contact/update", array("id"=>$data->id))', 'visible'=>'Contact::model()->updateAvailable($data->status)', ), 'suspend' => array( 'label'=>'保留', 'icon'=>'tasks', 'url'=>'Yii::app()->createUrl("contact/updatestatus", array("id"=>$data->id, "status"=>Contact::CONTACT_STATUS_SUSPEND))', 'click'=>'function() { var th=this; var afterSuspend=function(){}; $.fn.yiiGridView.update("contact-grid", { type:"POST", url:$(this).attr("href"), success:function(data) { $.fn.yiiGridView.update("contact-grid"); afterSuspend(th,true,data); }, error:function(XHR) { return afterSuspend(th,false,XHR); } }); return false;}', ), ), ), ), )); ?>
のように
'template'=>'{view} {update} {delete} {user} {suspend}',
で表示するボタンを指定し、
'buttons'=>array( ),
のところで、ボタンごとの処理内容を記述します。
なお、
labelはボタンのラベルです。
iconはYii-Bootstrapの拡張で、指定したアイコンを表示することができます。
urlはボタンが押された際の動く処理です。
clickはボタンが押された際に動くJavacriptです。
visibleは表示、非表示を切り替えるのに使います。
ボタンについての詳しい説明はこちらを御覧ください。