예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function execute(\Exception $exception)
 {
     if (!$this->dependencyInjection->get('environment')->isSilent()) {
         error_log($exception->getMessage() . " " . $exception->getFile() . "(" . $exception->getLine() . ")");
     }
     $presenter = $this->getPresenter($this->request->getUrl());
     $response = new Response();
     $response->setStatusCode(500);
     $response->setContent($exception);
     if ($exception instanceof HTTPException) {
         $response->setStatusCode($exception->getStatusCode());
     }
     $event = new ExecutePresenterEvent($this->request, $response);
     $this->dependencyInjection->get('eventManager')->fire('executePresenter', $event);
     $presenter->render($this->request, $response);
 }
예제 #2
0
 /**
  * Validate url.
  *
  * @param Request $request
  * @param Config $config argument
  * @param int $position
  * @return string
  * @throws RequiredArgumentException
  */
 private function validateUrl(Request $request, $config, $position)
 {
     $url = $request->getUrl();
     $default = $config->getAttribute('default');
     if (preg_match('/^' . $config->getAttribute('pattern') . '$/', $url, $matches) && isset($matches[1])) {
         return $matches[1];
     } else {
         if ($default !== false) {
             return $config->getAttribute('default');
         } else {
             throw new RequiredArgumentException($position, $config->getAttribute('name'));
         }
     }
 }