duanmi4379 2014-02-14 13:18
浏览 31
已采纳

ZF2在某些模块中的子路由之前执行功能

I have a route called student, like this

'student' => array(
 'type' => 'Hostname',
   'options' => array(
     'route' => ':subdomain.domain.com',
     'constraints' => array(
       'subdomain' => '([a-zA-Z0-9]*)'
         ...

And there are child routes in some of my modules. I need to run a function (e.g. checkSubdomain()) before execute any action of this child routes.

Anyone can help me?

Thank you guys! My code now:

public function onBootstrap(MvcEvent $e)
{
    $eventManager        = $e->getApplication()->getEventManager();

    $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'checkSubdomain'));
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);
}

public function checkSubdomain(EventInterface $e) {
    $app = $e->getApplication();
    $sm = $app->getServiceManager();
    $routeMatch = $e->getRouteMatch();
    $matchedRouteName = $routeMatch->getMatchedRouteName();


    $arr = explode('/',$matchedRouteName);
    if ($arr[0]=='student') {
        $subdomain = $routeMatch->getParam('subdomain');
        $em = $sm->get('project_entitymanager');
        $proj = $em->getRepository('Project\Entity\Project')->findOneBy(array('subdomain' => $subdomain));

        if (!$proj) $e->stopPropagation();
    }
}
  • 写回答

2条回答 默认 最新

  • 普通网友 2014-02-14 13:29
    关注

    Depending on what actually needs to be done in this 'check', I would attach an event listener to the MvcEvent::EVENT_ROUTE event or perhaps MvcEvent::EVENT_DISPATCH

    For example

    // Module.php
    public function onBootstrap(MvcEvent $event) {
      $application  = $event->getApplication();
      $eventManager = $application->getEventManager();
    
      $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'checkSubdomain'));
    } 
    
    public function checkSubdomain(EventInterface $event) {
       // Use $event to fetch the required event criteria
       // and 'check' sub domain here
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么