Zend framework2 zf2如何在我自己的特定模块中使用第三方模块(基于路线)?

Zend framework2 zf2如何在我自己的特定模块中使用第三方模块(基于路线)?,zend-framework2,zfcuser,bjyauthorize,Zend Framework2,Zfcuser,Bjyauthorize,我正在开发ZendFramework2的网站。我有两个模块:管理模块称为管理(路径定义如www.mysite.com/admin/…)和公共站点称为应用程序(路径定义如www.mysite.com/…)我通过路径区分这两个模块 我不知道如何根据路线区分这两个模块 为了明确起见,我有两个问题,例如: 我在Administration/module.php中为模块管理et的登录系统使用Zfcuser,我添加了以下代码,目的是如果一个用户没有身份,布局将更改为登录表单 namespace Admini

我正在开发ZendFramework2的网站。我有两个模块:管理模块称为管理(路径定义如www.mysite.com/admin/…)和公共站点称为应用程序(路径定义如www.mysite.com/…)我通过路径区分这两个模块

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

为了明确起见,我有两个问题,例如:

  • 我在
    Administration/module.php
    中为模块管理et的登录系统使用Zfcuser,我添加了以下代码,目的是如果一个用户没有身份,布局将更改为登录表单

    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__ 
                        ) 
                ) 
            );
        }
    }
    
  • 但是所有这两个模块都受到函数checkLoginAngelayout()的影响。。我只想在模块管理中使用模块ZfcUser,而不想在模块应用程序中使用。 我可以对模块管理器或事件管理器做些什么来解决问题吗

  • 我发现了一个名为BjyAuthorize的第三方模块,它由“guard”用于ACL。当我在
    application.config.php
    中激活模块时,我的两个模块都由它控制。但是我只想在模块管理中使用第三方模块,而不是其他模块

  • 你的第一个方法是失败

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

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

    plz查看其文档以获取更多信息,还有一篇关于如何将ZFCUser和BJY结合在一起的博客文章。

    谢谢你的回答。我已经意识到“一起加入zfcuser和bjy”。链接中的示例只是应用程序中的一个模块。但我的问题是我只想在一个模块中使用它们,其他模块不会受到影响。你可以允许你的第二个模块的整个路线绕过bjyauthorize gaurd