/** * @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; }
/** * 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; }