web-dev-qa-db-fra.com

change changer de vue

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,
        ]);
 }
}
10
Jaya Kumari
       [
          '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;
            }

          }
          ],
27
Er Sahaj Arora

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',
        ]);
    },
]

]

6
cbaconnier

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]);
    }
],
6
Skav

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']);
       },
    ]
]
5
Insane Skull

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',
        ]);
    },
]],
0
harlitad