我制作了一个小应用:丢失了用户,我检查了我想要的人,点击了一个按钮,并且正在向他们的电子邮件发送某条消息。
我正在使用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);
}
}
}
答案 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);
}
干杯, 标记