2013-12-18 117 views
0

我做了一個小應用程序:有一個用戶丟失,我檢查了我想要的人,點擊一個按鈕,並且某條消息正在發送到他們的電子郵件。無法更改yii CCheckboxColumn值

我使用yii的複選框列和ajax爲了將用戶的電子郵件發送到控制器中的操作。

現在,爲了能夠調試此應用程序,我將目標地址設置爲我的,並將用戶的電子郵件設置爲消息變量。

該應用程序的作品!但是,我得到了用戶的ID而不是他們的電子郵件。 默認情況下,複選框列會發送模型的標識,但可以使用'name'或'value'(HOWERVER)將其更改爲HOWERVER,但由於某些原因,這兩行不起作用。

我在這上面坐了四天,我又寫了一個ajax,但是我仍然開了個id。

如果有人能幫助我,我會很高興。下面的代碼:

GridView控件:

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'test-person-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    'id', 
    'name', 
    'email', 
    array(   
      'id'=>'col', 
      'class'=>'CCheckBoxColumn', 
      'selectableRows'=>'2', 
      'value'=>'$data->email', 
     ), 


    array(
     'class'=>'CButtonColumn', 
     ), 
    ), 

)); ?>

阿賈克斯:

<?php 
Yii::app()->clientScript->registerScript('send',' 
$("#sender").click(function(){ 
     var checked=$("#test-person-grid").yiiGridView("getChecked","col"); 
     var count=checked.length; 
     if(count>0 && confirm(" do you want to send "+count+" message? ")) 
     { 
       $.ajax({ 
         data:{checked:checked}, 
         url:"'.CHtml::normalizeUrl(array('testPerson/sender')).'", 
         success:function(data){$("#test-person-grid").yiiGridView("update",{});},    
       }); 
     } 
     }); 
'); 
?> 

控制器動作:

public function actionSender() 
{ 
    if(Yii::app()->request->getIsAjaxRequest()) 
    { 
      $checkedMails=$_GET['checked']; 
      foreach($checkedMails as $message) 
      { 
       mail('[email protected]', 'Test mail', $message); 
      } 

    } 
} 
+0

可能是草率的,但你可以不做一個foreach循環來檢查你的用戶ID,並在做foreach($ checkedMails as $ message)之前創建一個新的電子郵件數組''。也可能顯示'$ checkedMails'數組。 –

+0

這聽起來像一個解決方案,但我遇到了3個問題:1)整個數組不是發送,除非我將它與「foreach」分開2)我發現如何在yii中創建數組,但不知道如何獲取屬性從另一個aray中的$ id(試過SQL查詢 - 沒有工作eather)3)我試圖離開foreach並使用「get attributes」函數,沒有工作eather :( – Mark2Bra

回答

0

謝謝!最後它起作用。 我只用一個的foreach,而在它之下我用findByPk這樣的:

$checkedIds=$_GET['checked']; 
      foreach($checkedIds as $id) 
      { 
       $message=TestPerson::model()->findByPk($id)->email;  
       mail('[email protected]', 'Test mail', $message); 
      } 

乾杯, 馬克。