2016-11-29 39 views
0

錯誤400,我有以下部件:Yii的1.1.x版本:CbuttonColumn {}刪除在CGridView返回使用POST

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'feast-days-grid', 
'dataProvider'=>$model->search(), 
'filter'=>$model, 
'columns'=>array(
    'day', 
    'id', 
    array(
     'class'=>'CButtonColumn', 
        'template'=>'{delete}', 
      ), 
), 
)); 

過濾器:

public function filters() 
{ 
    return array(
     'accessControl', // perform access control for CRUD operations 
     'postOnly + delete', // we only allow deletion via POST request 
    ); 
} 

規則:

public function accessRules() 
{ 
    return array(
        array('allow', 
         'actions' => array('index','view','create', 'admin', 'delete', 'update'), 
         'roles' => array('master'), 
        ), 
        array('deny', // deny all users 
         'users' => array('*'), 
        ), 
    ); 
} 

刪除操作:

public function actionDelete($id) 
{ 
    FeastDays::model()->deleteAllByAttributes(array('id'=>$id)); 
    // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser 
    if(!isset($_GET['ajax'])) 
     $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); 
} 

我使用的actionDelete是無限的,看起來它從來沒有真正達到它。首先,我沒有獨特的ID-s,只有幾天,我給模型提供了ID-s,因爲我認爲這可能會導致一個問題,即將日期用作函數中的屬性,但結果相同。

我在尋找很多關於這個問題的信息,大多數人都有一些.js文件在jQuery之前加載的問題,但是在我的webapp中,jQuery首先加載。 別人的問題是,ajax使用GET而不是POST,但我檢查了Firebug,我的請求使用POST。我甚至禁用了ajax,但是如果沒有它,我仍然會得到錯誤400。

請幫幫我,我迷路了。

回答

0

我終於自己解決了。看起來它需要一個只包含整數值的ID(我試過用uniqid()爲每個日期生成ID-s,但它仍然拋出錯誤400),如果它只獲得給定的整數ID-s actionDelete(),它工作正常。如果有人知道它爲什麼會發生,我會很感激他們的答案,因爲我發現這種情況很奇怪。