无法更改yii CCheckboxColumn值

时间:2013-12-18 16:15:37

标签: php ajax yii

我制作了一个小应用:丢失了用户,我检查了我想要的人,点击了一个按钮,并且正在向他们的电子邮件发送某条消息。

我正在使用yii的复选框列和ajax,以便将用户的电子邮件发送到控制器中的操作。

现在,为了能够调试此应用,我将目标地址设置为我的,并将用户的电子邮件设置为消息变量。

该应用有效!但是,我得到用户的ID而不是他们的电子邮件。 Checkbox列默认发送模型的id,但是可以用'name'或'value'来改变它,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',
        ),
    ),

)); ?&GT;

ajax:

<?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('mark@gmail.com', 'Test mail', $message);
            }

    }
}

2 个答案:

答案 0 :(得分:0)

你有userID所以我会在控制器中执行findByPK。

YII论坛上的这个问题是一样的,工作人员给出的答案是一样的。 http://www.yiiframework.com/forum/index.php/topic/48235-fnyiigridviewgetchecked-returns-empty-values/

答案 1 :(得分:0)

谢谢!最后它有效。 我只使用了一个foreach,在其下面我使用了findByPk:

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

干杯, 标记