<?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();
$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] ';