2014-12-25 19 views
4

是yii2的新功能。我一直在嘗試使用post方法將一些參數發送到視圖中的操作,不幸的是,我的操作看起來不會看到/接收它們。幫助將不勝感激。如何從yii2 gridview發送發佈參數

我列動作是這樣的:

'buttons'=> [ 
    'password'=> function ($url, $model, $key){ 
    $url =$url = Url::toRoute(['users/reset-password', 'username' => $model->username]); 
    return Html::a('<span class="glyphicon glyphicon-asterisk"></span>',$url,[ 
        'title'=>'Clave', 
        'data-confirm' => Yii::t('yii', 'Are you sure you want to change this password?'), 
        'data-method' => 'post', 
        'data' => ['username'=>$model->username, 'test-name'=>'this is just for testing'], 
         ]); 
       }, 
..... 

一切都在數據參數應該通過郵局發送,但我只得到了CSRF令牌.. 預先感謝您的幫助。

回答

2

「數據參數中的所有內容都應該通過郵件發送」爲什麼你相信?我無法在文檔中找到任何「數據」中的內容將以郵寄方式發送。
您可以:

  1. 使用get發送params中,
  2. 創建一個表單和它環繞的鏈接。它應該通過郵寄發送。
+0

更新和刪除操作後發送ID PARAM。我不想使用GET。使用表格是不高效的,有1000個用戶將是1000個表格...必須有一個方法... – Mamba

+0

有,寫代碼... –

+0

我覺得@MihaiP。第一個選擇是你最好的答案。爲什麼通過URL查詢參數發送所需的參數是一個問題? (即GET params)。 Yii在gridviews刪除按鈕中原生地執行此操作。只是一個空的POST到[控制器] /刪除?id = [id]。 – lennartvdd

0

由會議儘量發送:

'buttons'=> [<br/> 
    'password'=> function ($url, $model, $key){<br/> 
    Yii::$app->session->set('username',$model->username);<br/> 
    Yii::$app->session->set('test-name','this is just for testing');<br/> 
    $url =$url = Url::toRoute(['users/reset-password', 'username' => $model->username]);<br/> 
    return Html::a('<span class="glyphicon glyphicon-asterisk"></span>',$url,[<br/> 
        'title'=>'Clave',<br/> 
        'data-confirm' => Yii::t('yii', 'Are you sure you want to change this password?'),<br/> 
        'data-method' => 'post',<br/> 

         ]); 
       }, 

控制器上稱之爲:

您可以獲取會話:

Yii::$app->session->get('username'); 

,並刪除會議

Yii::$app->session->remove('username'); 
+0

誰提高了這個?這不可能工作,因爲會話是在生成按鈕時運行的代碼中設置的,而不是單擊。 – Cthulhu

7

使用下面的代碼

echo Html::a('Name', ['controller/action'], [ 
    'class'=>'classname', 
    'data'=>[ 
     'method'=>'post', 
     'confirm'=>'Are you sure? OK to continue Retract..', 
     'params'=>[ 
      'param1'=>'value', 
      ......., 
     ], 
    ] 
]);