我已经设置了基本的骨架Yii应用程序,具有权限和用户扩展名。除用户外,权利工作正常。我使用的是NetBeans 8.0.1。
我已将此代码放入SiteController和UserController,如说明所示:
public function filters() {
return array(
'rights',
);
}
我注意到一件奇怪的事。这里:
class SiteController extends Controller {
当我用鼠标光标按住CTRL查看单词Controller
时,在弹出窗口中,NetBeans显示了它指向的位置。它指向应用程序目录中的Controller。这是我的预期,我认为它有效,因为Controller扩展了RController等等。
对于UserController,它无法正常工作。
class UserController extends Controller {
现在,当我用鼠标光标按住CTRL查看单词Controller
时,在弹出窗口中,NetBeans显示它指向的Controller不在应用程序目录中,而是指向Controller中的 framework 目录。我认为这就是它无法正常工作的原因。但是,自从我点击它并跳转到此文件后,NetBeans也显示了与SiteController相同的框架Controller,但它仍然有效!所以我现在不知道它是否只是一个NetBeans错误或者是什么。但无论如何,我唯一关心的是权利也适用于UserController。
如何定义我的UserController以指向应用程序中的Controller,而不是框架中的Controller。但也许它指向了正确的位置,它只是NetBeans的错误显示。但如果不是这就是问题,而不是什么?
更新:
我注意到了一件事:某个地方的权利适用于用户,例如:当我在地址栏中看到这个时:
project/user/user/view/id/1
在我看来,因为它将是用户模块,然后是用户类,操作等。 但是当它不起作用时,我只看到:
project/user
是不是使用了类用户?或者这里发生了什么?正在使用什么控制器?无?!
非常感谢!
答案 0 :(得分:0)
我已经明白了(我猜)。在:
app/modules/user/controllers
有更多的控制器,我已经把
public function filters() {
return array(
'rights',
);
}
仅在UserController中,这就是为什么它只在我调用时才起作用:
project/user/user/...
现在还有DefaultController。当路线中没有定义其他控制器时使用。我也在DefaultController中放置了权限过滤器,现在它也在那里工作。所以NetBeans显示为Controller的路径可能只是一个错误,但我不确定,我不是那么专业的决定。