Я установил базовое скелетное приложение Yii с правами и расширениями пользователя. Права работают нормально, кроме пользователя. Я использую NetBeans 8.0.1.
Я поместил этот код в SiteController и UserController, как в инструкциях:
public function filters() {
return array(
'rights',
);
}
Я заметил странную вещь. Вот:
class SiteController extends Controller {
когда я перебирал слово Controller
с помощью курсора мыши, удерживающего клавишу CTRL, во всплывающем окне NetBeans показывал, куда он указывает. Он указывал на контроллер в каталоге приложения. Это то, что я ожидал, и я думал, что это работает, потому что Controller расширяет RController и так далее.
Для UserController это не работало.
class UserController extends Controller {
Теперь, когда я перехожу слово Controller
с помощью курсора мыши, удерживающего клавишу CTRL, во всплывающем окне NetBeans показывает, что он указывает на контроллер не в каталоге приложения, а на контроллер в фреймворк каталог. Я думал, что именно поэтому он не работает. Но так как я щелкнул по нему и перешел к этому файлу, NetBeans также показывает тот же Framework Controller для SiteController, но он все еще работает! Поэтому я не знаю сейчас, является ли это только ошибкой NetBeans или чем-то другим. Но не смотря ни на что, я забочусь только о том, чтобы права работали и для UserController.
Как я могу определить свой UserController для указания на контроллер в приложении, а не в рамках. Но, возможно, это указывает на правильное место, это просто NetBeans, что показывает это неправильно. Но если не в этом проблема, то чем?
ОБНОВИТЬ:
Я заметил одну вещь: где-то права работают на пользователя, например, когда я вижу это в адресной строке:
project/user/user/view/id/1
мне кажется, что это будет пользовательский модуль, затем пользовательский класс, действие и т. д.
Но когда это не работает, я вижу только:
project/user
это не использует класс пользователя? Или что здесь происходит? Какой контроллер используется? Никто?!
Большое спасибо!
Я понял это (наверное). В:
app/modules/user/controllers
Есть еще контроллеры, и я поставил
public function filters() {
return array(
'rights',
);
}
только в UserController, поэтому он работал только когда я звонил:
project/user/user/...
Теперь есть также DefaultController. Это используется, когда никакой другой контроллер не определен в маршруте. Я установил фильтры прав в DefaultController, и теперь он работает там же. Так что то, что NetBeans показывает как путь к Controller, вероятно, является лишь ошибкой, но я не уверен, я не настолько профессионален, чтобы принимать решение.
Других решений пока нет …