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
- 5444 reads