当前位置: 首页>>代码示例>>PHP>>正文


PHP Dispatcher::getActiveController方法代码示例

本文整理汇总了PHP中Phalcon\Mvc\Dispatcher::getActiveController方法的典型用法代码示例。如果您正苦于以下问题:PHP Dispatcher::getActiveController方法的具体用法?PHP Dispatcher::getActiveController怎么用?PHP Dispatcher::getActiveController使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Phalcon\Mvc\Dispatcher的用法示例。


在下文中一共展示了Dispatcher::getActiveController方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: beforeExecuteRoute

 /**
  * To zdarzenie jest wywoływane przed wykonaniem każdego routingu w dispatcherze
  */
 public function beforeExecuteRoute(\Phalcon\Events\Event $event, \Phalcon\Mvc\Dispatcher $dispatcher)
 {
     $controller = get_class($dispatcher->getActiveController());
     $action = $dispatcher->getActiveMethod();
     // Wyłuskaj adnotacje przypisane do bieżącego kontrolera:
     $annotations['controller'] = $this->annotations->get($controller)->getClassAnnotations();
     // Wyłuskaj adnotacje przypisane do bieżącej akcji:
     $annotations['action'] = $this->annotations->getMethod($controller, $action);
     $roles = [];
     /**
      * @var \Phalcon\Annotations\Collection $collection
      */
     foreach ($annotations as $key => $collection) {
         if ($collection instanceof \Phalcon\Annotations\Collection and $collection->has(self::ANNOTATION_NAME)) {
             $roles[$key] = $collection->get(self::ANNOTATION_NAME)->getArguments();
         }
     }
     // Jeżeli nie ma żadnych zabezpieczeń lub akcja nie jest zabezpieczona:
     if (count($roles) === 0 or array_key_exists('action', $roles) and in_array(\Application\Common\User::NOT_SECURED, $roles['action'])) {
         return true;
     }
     $required = [];
     // Tworzenie listy wymaganych ról dla danej akcji - adnotacje akcji mają wyższy priorytet niż adnotacje kontrolera:
     if (array_key_exists('action', $roles)) {
         $required = $roles['action'];
     } else {
         if (false == in_array(\Application\Common\User::NOT_SECURED, $roles['controller'])) {
             $required = $roles['controller'];
         }
     }
     $access = false;
     foreach ($required as $role) {
         if ($this->getDI()->getUser()->isGranted($role)) {
             $access = true;
             break;
         }
     }
     if ($access === false) {
         // If user is logged in and tries to access forbiden page:
         if ($this->getDI()->getUser()->isAuthenticated() and $controller !== '\\Application\\Common\\Controller\\Error') {
             return $dispatcher->getActiveController()->response->redirect(['for' => 'error.access_forbiden']);
         } else {
             $route = $dispatcher->getActiveController()->router->getMatchedRoute()->getName();
             $params = $dispatcher->getActiveController()->router->getParams();
             $this->getDI()->getSession()->set('$PHALCON/REQUIRED_URL$', ['for' => $route] + $params);
             return $dispatcher->getActiveController()->response->redirect(['for' => 'user.sign_in']);
         }
     }
     return true;
 }
开发者ID:siciarek,项目名称:suggester,代码行数:53,代码来源:SecurePlugin.php

示例2: afterDispatchLoop

 public function afterDispatchLoop(Event $event, Dispatcher $dispatcher)
 {
     $di = $this->getDI();
     $response = $di->get('response');
     $content = $response->getContent();
     if ($content === '' && $dispatcher->getActiveController() instanceof RestControllerInterface) {
         $returnedResponse = $dispatcher->getReturnedValue() instanceof ResponseInterface;
         if ($returnedResponse === false) {
             /** @var \PhalconRest\Mvc\RestView $rest */
             $rest = $di->get('rest');
             /** @var Manager $eventsManager */
             $eventsManager = $this->_eventsManager;
             //$eventsManager = $dispatcher->getDI()->get('eventsManager');
             $renderStatus = true;
             if ($eventsManager instanceof ManagerInterface) {
                 $renderStatus = $eventsManager->fire('application:viewRender', $this, $rest);
             }
             if ($renderStatus) {
                 $rest->render($dispatcher->getControllerName(), $dispatcher->getActionName());
                 $content = $rest->getContent();
             }
             /** @var \Phalcon\Http\Response $response */
             $response = $di->get('response');
             $response->setContent($content)->send();
         }
     }
 }
开发者ID:serebro,项目名称:phalcon-rest,代码行数:27,代码来源:DispatcherEventsHandler.php

示例3: beforeExecuteRoute

 /**
  * beforeExecuteRoute
  * @param \Phalcon\Events\Event $event
  * @param \Phalcon\Mvc\Dispatcher $dispatcher
  * @return bool|Response
  * @throws \Phalcon\Exception
  */
 public function beforeExecuteRoute($event, $dispatcher)
 {
     $controller = $dispatcher->getActiveController();
     $result = $controller->beforeAction();
     if ($result instanceof Response) {
         return $result->send();
     } elseif ($result === false) {
         $exception = $controller->getException();
         if (!is_null($exception)) {
             throw $exception;
         }
     }
     return true;
 }
开发者ID:remk-wadriga,项目名称:phalcon-base-application-project,代码行数:21,代码来源:ControllersListener.php


注:本文中的Phalcon\Mvc\Dispatcher::getActiveController方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。