我做了一个小应用程序:有一个用户丢失,我检查了我想要的人,点击一个按钮,并且某条消息正在发送到他们的电子邮件。无法更改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);
}
}
}
可能是草率的,但你可以不做一个foreach循环来检查你的用户ID,并在做foreach($ checkedMails as $ message)之前创建一个新的电子邮件数组''。也可能显示'$ checkedMails'数组。 –
这听起来像一个解决方案,但我遇到了3个问题:1)整个数组不是发送,除非我将它与“foreach”分开2)我发现如何在yii中创建数组,但不知道如何获取属性从另一个aray中的$ id(试过SQL查询 - 没有工作eather)3)我试图离开foreach并使用“get attributes”函数,没有工作eather :( – Mark2Bra