I have create action on update and view in controller, but this action does not change on action column in index page
public function actionLeadView($id){
$id = $_GET['id'];
$model = Leads::findOne($id);
return $this->render('viewlead', [
'model' => $model,
]);
}
public function actionLeadUpdate($id){
$id = $_GET['id'];
$model = Leads::findOne($id);
date_default_timezone_set("Asia/Kolkata");
$date = date('Y/m/d H-i-sa');
if ($model->load(Yii::$app->request->post())) {
$model->modified = $date;
if($model->validate()){
$model->save();
return $this->redirect(['viewlead', 'id' => $model->id]);
}else {
return $this->render('updatelead', [
'model' => $model,
]);
}
}
else
{
return $this->render('updatelead', [
'model' => $model,
]);
}
}
[
'class' => 'yii\grid\ActionColumn',
'header' => 'Actions',
'headerOptions' => ['style' => 'color:#337ab7'],
'template' => '{view}{update}{delete}',
'buttons' => [
'view' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [
'title' => Yii::t('app', 'lead-view'),
]);
},
'update' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
'title' => Yii::t('app', 'lead-update'),
]);
},
'delete' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
'title' => Yii::t('app', 'lead-delete'),
]);
}
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'view') {
$url ='index.php?r=client-login/lead-view&id='.$model->id;
return $url;
}
if ($action === 'update') {
$url ='index.php?r=client-login/lead-update&id='.$model->id;
return $url;
}
if ($action === 'delete') {
$url ='index.php?r=client-login/lead-delete&id='.$model->id;
return $url;
}
}
],
Often you need to change just controller name in action button's url. You can do it simple using urlCreator
[
'class' => 'yii\grid\ActionColumn',
'urlCreator' => function ($action, $model, $key, $index) {
return Url::to(['another-controller-name/'.$action, 'id' => $model->id]);
}
],
In gridview,
[
'class' => 'yii\grid\ActionColumn',
'template' => '{leadView} {leadUpdate}',
'buttons' => [
'leadView' => function ($url, $model) {
$url = Url::to(['controller/lead-view', 'id' => $model->whatever_id]);
return Html::a('<span class="fa fa-eye"></span>', $url, ['title' => 'view']);
},
'leadUpdate' => function ($url, $model) {
$url = Url::to(['controller/lead-update', 'id' => $model->whatever_id]);
return Html::a('<span class="fa fa-pencil"></span>', $url, ['title' => 'update']);
},
]
]
Since the question is
how to change view, update and delete url on action column in yii2
I'm improving the answer of @insane-skull by adding delete action
[
'class' => 'yii\grid\ActionColumn',
'template' => '{leadView} {leadUpdate} {leadDelete}',
'buttons' => [
'leadView' => function ($url, $model) {
$url = Url::to(['controller/lead-view', 'id' => $model->whatever_id]);
return Html::a('<span class="fa fa-eye"></span>', $url, ['title' => 'view']);
},
'leadUpdate' => function ($url, $model) {
$url = Url::to(['controller/lead-update', 'id' => $model->whatever_id]);
return Html::a('<span class="fa fa-pencil"></span>', $url, ['title' => 'update']);
},
'leadDelete' => function ($url, $model) {
$url = Url::to(['controller/lead-delete', 'id' => $model->whatever_id]);
return Html::a('<span class="fa fa-trash"></span>', $url, [
'title' => 'delete',
'data-confirm' => Yii::t('yii', 'Are you sure you want to delete this item?'),
'data-method' => 'post',
]);
},
]
]
I am new in Yii2
, thank you for helping me with your code @cbaconnier.
This is your code, with a little modification:
[
'class' => 'yii\grid\ActionColumn',
'template' => '{leadView} {leadUpdate} {leadDelete}',
'buttons' => [
'leadView' => function ($url, $model) {
$url = Url::to(['datakegiatan/view', 'id' => $model->ID_DATA]);
return Html::a('<span class="fa fa-eye"></span>', $url, ['title' => 'view']);
},
'leadUpdate' => function ($url, $model) {
$url = Url::to(['datakegiatan/update', 'id' => $model->ID_DATA]);
return Html::a('<span class="fa fa-pencil"></span>', $url, ['title' => 'update']);
},
'leadDelete' => function ($url, $model) {
$url = Url::to(['datakegiatan/delete', 'id' => $model->ID_DATA]);
return Html::a('<span class="fa fa-trash"></span>', $url, [
'title' => 'delete',
'data-confirm' => Yii::t('yii', 'Are you sure you want to delete this item?'),
'data-method' => 'post',
]);
},
]],
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With