Задать вопрос
dilikpulatov
@dilikpulatov
веб-программист

В Yii2 как правильно использовать $app->runAction()?

Здравствуйте!
у меня такоя проблема
public function beforeAction($action){
	$user_action = $action->controller->id.'/'.$action->id;
	if (!in_array($user_action, Yii::$app->user->identity['rols']) ) {
		return $this->redirect(['/admin/default/error']);
	}
	return parent::beforeAction($action);
}

и там редирект вообще не работает....почему? или в бефорекшен нельзя?

а потом сделал другой вариант
public function beforeAction($action){
	$user_action = $action->controller->id.'/'.$action->id;
	if (!in_array($user_action, Yii::$app->user->identity['rols']) ) {
		return Yii::$app->runAction('/admin/default/error');
	}
	return parent::beforeAction($action);
}

этот вариант не очень хорошо работает....просто берёт тот вид и выводят...а там в адресному строке осталось тот же старый адрес...
итак как можно редиректировать в бефорекшен по условиями? или есть другой вариант - подскажите
  • Вопрос задан
  • 2702 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
dilikpulatov
@dilikpulatov Автор вопроса
веб-программист
нашёл!
public function beforeAction($action){
	$user_action = $action->controller->id.'/'.$action->id;
	if (!in_array($user_action, Yii::$app->user->identity['rols']) && Yii::$app->controller->id != 'default' ) {
		$this->redirect(['/admin/default/error']);
		return false;
	}
	return parent::beforeAction($action);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
Судя по коду Вы пытаетесь сделать разграничение прав пользователей, в этом случае - Вы изобретаете велосипед. Для разграничения прав доступа используется фильтры контроля доступа и RBAC
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы