Пусть у нас есть 3 вида пользователя и 3 вида модуля соответсвенно:
modules
-> cleaner
-> admin
-> client
У каждого модуля есть контроллер Order
Как сделать так, чтобы смотря на роль пользователя, можно было определить, контроллер какого модуля запускать?
Например, если пользователь cleaner, то по url: "order/list" должен запуститься контроллер order у модуля cleaner.
Спасибо пользователю
matperez за его ответ.
Да, можно работать с UrlRule. Но что, если контроллеров 1000? Под каждый url задавать свой контроллер? Возможно ли как-то указать фреймворку, с каким модулем надо работать? Например, если пользователь admin, то нужно сказать фреймворку, что нужно работать только с модулем admin.
Решение:
namespace app\components;
use yii\web\UrlRule;
class RoleUrlRule extends UrlRule
{
public function parseRequest($manager, $request)
{
$pathInfo = $request->getPathInfo();
if (\Yii::$app->user->identity->role == 'cleaner')
return ['cleaner/' . $pathInfo, array()];
}
}