/** * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); $route = $request->attributes->get('_route'); if (empty($route)) { $route = $request->attributes->get('_master_request_route'); } if (!$this->provider->isItemWhitelisted($route)) { $notFoundException = new NotFoundHttpException('Sorry, the page that you requested was not found.'); $statusCode = $notFoundException->getStatusCode(); $parameters = ['status_code' => $statusCode, 'status_text' => Response::$statusTexts[$statusCode], 'currentContent' => '', 'exception' => FlattenException::create($notFoundException), 'logger' => $this->logger]; $view = View::create($parameters); $view->setFormat(self::VIEW_FORMAT); $view->setTemplate($this->findTemplate($request, $statusCode, $this->kernel->isDebug())); $response = $this->viewHandler->handle($view); $event->setResponse($response); } }
/** * 每个testXXX执行之前,都会执行此函数,净化数据库。 * * NOTE: 如果数据库已创建,那么执行清表操作,不重建。 */ private function setServiceKernel() { $kernel = new \AppKernel('test', false); $kernel->loadClassCache(); $kernel->boot(); Request::enableHttpMethodParameterOverride(); $request = Request::createFromGlobals(); $serviceKernel = ServiceKernel::create($kernel->getEnvironment(), $kernel->isDebug()); $serviceKernel->setParameterBag($kernel->getContainer()->getParameterBag()); $serviceKernel->setConnection($kernel->getContainer()->get('database_connection')); $currentUser = new CurrentUser(); $currentUser->fromArray(array('id' => 1, 'nickname' => 'admin', 'email' => '*****@*****.**', 'password' => 'admin', 'currentIp' => '127.0.0.1', 'roles' => array('ROLE_USER', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN', 'ROLE_TEACHER'))); $serviceKernel->setCurrentUser($currentUser); $this->serviceKernel = $serviceKernel; }
} use Symfony\Component\Debug\Debug; use Topxia\Service\User\CurrentUser; use Topxia\Service\Common\ServiceKernel; use Symfony\Component\HttpFoundation\Request; fix_gpc_magic(); $loader = (require_once __DIR__ . '/../app/bootstrap.php.cache'); Debug::enable(); require_once __DIR__ . '/../app/AppKernel.php'; $kernel = new AppKernel('dev', true); $kernel->loadClassCache(); Request::enableHttpMethodParameterOverride(); $request = Request::createFromGlobals(); $kernel->boot(); // START: init service kernel $serviceKernel = ServiceKernel::create($kernel->getEnvironment(), $kernel->isDebug()); $serviceKernel->setEnvVariable(array('host' => $request->getHttpHost(), 'schemeAndHost' => $request->getSchemeAndHttpHost(), 'basePath' => $request->getBasePath(), 'baseUrl' => $request->getSchemeAndHttpHost() . $request->getBasePath())); $serviceKernel->setParameterBag($kernel->getContainer()->getParameterBag()); $serviceKernel->registerModuleDirectory(dirname(__DIR__) . '/plugins'); $serviceKernel->setConnection($kernel->getContainer()->get('database_connection')); $serviceKernel->getConnection()->exec('SET NAMES UTF8'); $currentUser = new CurrentUser(); $currentUser->fromArray(array('id' => 0, 'nickname' => '游客', 'currentIp' => $request->getClientIp(), 'roles' => array())); $serviceKernel->setCurrentUser($currentUser); // END: init service kernel // NOTICE: 防止请求捕捉失败而做异常处理 // 包括:数据库连接失败等 try { $response = $kernel->handle($request); } catch (\RuntimeException $e) { echo "Error! " . $e->getMessage();