我正在通过ZendFramework 2开发一个网站。我有2个模块:管理模块称为管理(路由定义为www.mysite.com/admin/ ...)和模块公共站点,称为应用程序(路由已定义)比如www.mysite.com / ...)我通过路线区分了两个模块。
我不知道如何根据路线区分这两个模块。
为了说清楚,我有2个问题,例如:
我在Administration/Module.php
中使用Zfcuser作为模块Administration et的登录系统。我添加了以下代码,目的是如果一个用户没有身份,布局将更改为登录形式。
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,而不是模块应用程序。
我可以对模块管理器或事件管理器做些什么来解决问题吗?
application.config.php
中激活模块时,我的所有2个模块都由它控制。但我只想在模块管理中使用第三方模块,而不是其他模块。答案 0 :(得分:0)
你的第一种方法是失败
因为(正如你所发现的)还有另一个模块来做这样的事情,叫做BJYAUTHORIZE
它有一个配置,允许不同类型的用户访问哪个控制器/动作/模块/路由/...
请查看它的文档以获取更多信息,还有一篇关于如何将ZFCUser和BJY加入的博客文章。 http://samminds.com/2013/03/zfcuser-bjyauthorize-and-doctrine-working-together/