J'ai créer une action sur la mise à jour et la vue dans le contrôleur, mais cette action ne change pas dans la colonne d'actions de la page d'index
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;
}
}
],
Depuis la question est
comment changer de vue, mettre à jour et supprimer url sur la colonne action dans yii2
J'améliore la réponse de @ insane-skull en ajoutant l'action delete
[
'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',
]);
},
]
]
Souvent, il suffit de changer le nom du contrôleur dans l'URL du bouton d'action. Vous pouvez le faire simplement avec urlCreator
[
'class' => 'yii\grid\ActionColumn',
'urlCreator' => function ($action, $model, $key, $index) {
return Url::to(['another-controller-name/'.$action, 'id' => $model->id]);
}
],
Dans 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']);
},
]
]
Je suis nouveau dans Yii2
, merci de m'aider avec votre code @cbaconnier . C'est votre code, avec une petite 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',
]);
},
]],