yii2 Редирект из behaviors -- переадресация на произвольную страницу. Пример кода
Primary tabs
Идя проста -- после всех разрешающих правил делаем для данного action одно с
'allow' => false,
и функцией обратного вызова.
Как-то так:
class SiteController extends Controller
{
public function behaviors()
{
return // \yii\helpers\ArrayHelper::merge(parent::behaviors(),
[
'access' => [
'class' => AccessControl::className(),
'only' => ['index', 'logout', 'login'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
[
'actions' => ['login'],
'allow' => true,
'roles' => ['?'],
],
[
'actions' => ['index'],
'allow' => true,
'roles' => ['reader'],
],
[ // последнее правило для тех кому нельзя
'actions' => ['index'],
'allow' => false,
'roles' => ['@', '*'], // все роли
'denyCallback' => function($rule, $action) {
// и тут уже выбираем куда переадресывать
Yii::$app->session->setFlash('info', 'Сообщение о переадресации');
return $action->controller->redirect('dashboard');
},
]
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
- Log in to post comments
- 6323 reads