I have the following widget:
$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}',
),
),
));
Filters:
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
);
}
Rules:
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('*'),
),
);
}
Delete action:
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'));
}
The actionDelete I'm using is the umpteenth one, looks like it never actually reaches it. First I didn't have unique ID-s, only days, I gave ID-s to the models because I thought it might cause an issue that I'm using dates as attributes in the function, but same result.
I was searching a lot about this issue and most people had the problem that some .js files were loaded before the jQuery, but in my webapp jQuery loads first. Others' problem was that the ajax used GET instead of POST, but I've checked in Firebug that my request uses POST. I even disabled ajax but I still get error 400 without it.
Please help me, I'm lost.