-
Notifications
You must be signed in to change notification settings - Fork 8
/
ClearFilterStateBehavior.php
36 lines (30 loc) · 1.09 KB
/
ClearFilterStateBehavior.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
namespace thrieu\grid;
use Yii;
use yii\base\ActionFilter;
use yii\web\Request;
class ClearFilterStateBehavior extends ActionFilter {
public $id;
public $params;
public $clearStateParam = 'clear-state';
public $redirectToParam = 'redirect-to';
public $exitIfAjax = true;
public function beforeAction($action) {
if(($params = $this->params) === null) {
$request = Yii::$app->getRequest();
$params = $request instanceof Request ? $request->post() : [];
}
if(isset($params[$this->clearStateParam]) && $params[$this->clearStateParam] != '0') {
FilterStateTrait::clearFilterStateParams($this->id);
if(Yii::$app->request->getIsAjax() && $this->exitIfAjax) {
Yii::$app->end();
} else {
$redirectTo = isset($params[$this->redirectToParam]) ?
$params[$this->redirectToParam] : Yii::$app->controller->getRoute();
Yii::$app->response->redirect($redirectTo);
}
return false;
}
return true;
}
}