<?php

$di = new Phalcon\DI();
$dispatcher = new Phalcon\Mvc\Dispatcher();
$dispatcher->setDI($di);
$dispatcher->setControllerName('posts');
$dispatcher->setActionName('index');
$dispatcher->setParams(array());
$controller = $dispatcher->dispatch();
Esempio n. 2
0
     $dispatcher->setDefaultNamespace('ST\\Apps\\' . $appName . '\\Controllers');
 }
 $eventsManager = new \Phalcon\Events\Manager();
 //附上侦听者,在分发之前处理get参数,使之可以支持 /module/controller/action/key1/value1/key2/value2
 $eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) {
     $keyParams = [];
     $params = $dispatcher->getParams();
     // array(0=>id, 1=>68)
     //用奇数参数作key,用偶数作值
     foreach ($params as $number => $value) {
         if ($number & 1) {
             $keyParams[$params[$number - 1]] = $value;
         }
     }
     // 重写参数
     $dispatcher->setParams($keyParams);
     // array(id => 68)
     //var_dump($dispatcher->getParams());exit;
 });
 //侦听异常之前,对404,500等错误进行处理及跳转、日志记录等
 $eventsManager->attach('dispatch:beforeException', function ($event, $dispatcher, $exception) use($di) {
     if ($exception instanceof \Phalcon\Mvc\Dispatcher\Exception) {
         switch ($exception->getCode()) {
             case \Phalcon\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
                 //2
             //2
             case \Phalcon\Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
                 //5
                 $di->getShared('session')->set('error_redirect_url', $di->get('request')->getURI());
                 $di->getShared('session')->set('error_exception_code', $exception->getCode());
                 $logInfo = '[404] ';