本文整理汇总了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;
}
示例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();
}
}
}
示例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;
}