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