2013-12-18 77 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); 
      } 

干杯, 马克。