0

我正在通过 ZendFramework 2 开发一个网站。我有 2 个模块:管理模块,称为管理(路由定义为 www.mysite.com/admin/...)和模块公共站点,称为应用程序(路由定义为 www.mysite. com/...) 我通过路由区分这 2 个模块。

我不知道如何根据路由区分这两个模块。

为了清楚起见,我有两个问题,例如:

  1. 我使用 Zfcuser 作为 Administration et 模块的登录系统,Administration/Module.php我添加了以下代码,目的是如果一个用户没有身份,则布局将更改为登录表单。

    namespace Administration;
    
    use Zend\Mvc\ModuleRouteListener;
    use Zend\Mvc\MvcEvent;
    
    class Module {
        public function onBootstrap(MvcEvent $e) {
            $eventManager = $e->getApplication ()->getEventManager ();
            $moduleRouteListener = new ModuleRouteListener ();
            $moduleRouteListener->attach ( $eventManager );
            $eventManager->attach('dispatch', array($this, 'checkLoginChangeLayout'));
    
        }
        public function checkLoginChangeLayout(MvcEvent $e) {
        if (! $e->getApplication ()->getServiceManager ()->get ( 'zfcuser_auth_service' )->hasIdentity ()) {
            $controller = $e->getTarget ();
            $controller->layout ( 'layout/authentication.phtml' );
            }
        }
    
        public function getConfig() {
        return include __DIR__ . '/config/module.config.php';
        }
    
        public function getAutoloaderConfig() {
        return array (
                'Zend\Loader\StandardAutoloader' => array (
                        'namespaces' => array (
                                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__ 
                        ) 
                ) 
            );
        }
    }
    

但是所有 2 个模块都受function checkLoginChangeLayout(). 我想只在模块管理中使用模块 ZfcUser,而不是模块应用程序。我可以对模块管理器或事件管理器做些什么来解决问题吗?

  1. 我发现了一个名为 BjyAuthorize 的第 3 方模块,它被“守卫”用于 ACL。当我在 中激活模块时application.config.php,我的所有 2 个模块都由它控制。但我只想在模块管理中使用第 3 方模块,而不是其他模块。
4

1 回答 1

0

你的第一种方法是失败

因为(正如你所发现的)还有另一个模块可以做这样的事情,叫做 BJYAUTHORIZE

它有一个配置允许不同类型的用户访问哪个控制器/动作/模块/路由/...

请查看它的文档以获取更多信息,还有一篇关于如何将 ZFCUser 和 BJY 一起加入的博客文章。 http://samminds.com/2013/03/zfcuser-bjyauthorize-and-doctrine-working-together/

于 2014-07-05T10:05:06.783 回答