Пример #1
0
 /**
  * @param ResourceBank $context
  * @return self
  */
 public static function generate(Resources $context)
 {
     $config = $context->getConfig();
     $charset = $config->value('view.charset', 'UTF-8');
     $self = __CLASS__;
     //
     $helpers = new static();
     $helpers->setResource(self::H_ESCAPE, function ($string) use($charset) {
         $flags = ENT_COMPAT | ENT_HTML5;
         return htmlspecialchars($string, $flags, $charset);
     })->setSeed(self::H_TR, function () use($context) {
         return $context->get('translator');
     })->setSeed(self::H_ATTR, 'Rakorium/Okapi/Dom/Attributes::helper')->setSeed(self::H_NUMBER, 'Rakorium/Okapi/Format/Number')->setSeed(self::H_MONEY, 'Rakorium/Okapi/Format/Money')->setSeed(self::H_TIMESTAMP, 'Rakorium/Okapi/Format/Time')->setSeed(self::H_URI, static::getUriFactory($context))->setSeed(self::H_BASE, [$self, 'baseFactory'])->setSeed(self::H_PREFIX, [$self, 'prefixFactory'])->setSeed(self::H_DATE, [$self, 'dateFactory'])->setSeed(self::H_TIME, [$self, 'timeFactory']);
     $custom = $config->node('helpers');
     $helpers->fromConfig($custom);
     //
     return $helpers;
 }
Пример #2
0
 /**
  * Creates an error model
  * @throws Exception\RuntimeException
  */
 protected function createError(Resources $context, $message, $status = 404)
 {
     $response = $context->getResponse();
     $config = $context->getConfig();
     $layout = $config->value('view.error_layout');
     if (!$layout) {
         throw new Exception\RuntimeException("[ERROR LAYOUT NOT SET] {$message}", 2);
     }
     $debug = $config->value('application.environment') == 'development';
     $error = array('status' => array('code' => $status, 'text' => Message\HttpStatus::message($status)), 'debug' => $debug);
     if ($debug) {
         $error['message'] = $message;
         $error['backtrace'] = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
     }
     $response->setStatusCode($status);
     $model = new ViewModel();
     $model->setLayout($layout)->setTemplate(false)->setData(['errors' => [$error]]);
     return $model;
 }