Можно ли в yii в rules поставить валидатор по определенному условию?
1. Вы можете написать свой валидатор и проверять в нем все, что вашей душе угодно.
2. Перед валидацией вы можете инициализировать модель с переданным role_id и в валидаторе использовать доп условия, типа:[
    ['state', 'required', 'when' => function($model) {
        return $model->role_id == '2';
    }],
]
Модель ничего не должна знать о роутинге, разбивайте на 2 сценария.