public function init() { // default path to runtime if (!Alias::existsAlias('runtime')) { Alias::setAlias('runtime', dirname(__DIR__) . '/runtime'); } $this->twig = new \Twig_Environment(null, array_merge(['cache' => Alias::getAlias($this->cachePath)], $this->options)); //$this->twig->setBaseTemplateClass('rock\template\twig\Template'); // Adding custom globals (objects or static classes) if (!empty($this->globals)) { $this->addGlobals($this->globals); } // Adding custom functions if (!empty($this->functions)) { $this->addFunctions($this->functions); } // Adding custom filters if (!empty($this->filters)) { $this->addFilters($this->filters); } $this->addExtensions([new Extension($this->uses)]); // Adding custom extensions if (!empty($this->extensions)) { $this->addExtensions($this->extensions); } //$this->twig->addGlobal('app', \rock\Rock::$app); // Change lexer syntax (must be set after other settings) if (!empty($this->lexerOptions)) { $this->addLexerOptions($this->lexerOptions); } }
public function init() { // default path to view if (!Alias::existsAlias('template.views')) { Alias::setAlias('template.views', dirname(__DIR__) . '/views'); } $this->request = Instance::ensure($this->request, '\\rock\\request\\Request'); $this->cache = Instance::ensure($this->cache, null, [], false); foreach ($this->chroots as &$chroot) { $chroot = Alias::getAlias($chroot); } $this->snippets = array_merge($this->defaultSnippets(), $this->snippets); $this->filters = array_merge($this->defaultFilters(), $this->filters); }
protected function normalizeRules(array &$result = [], array &$aliases = [], array $rules, array $params = [], array $group = []) { foreach ($rules as $alias => $rule) { if ($rule[0] === self::REST) { $this->normalizeRules($result, $aliases, ArrayHelper::only($this->RESTHandlers, Helper::getValue($rule['only'], []), Helper::getValue($rule['exclude'], [])), ['prefix' => $alias, 'replace' => $rule[1], 'controller' => $rule[2], 'filters' => isset($rule['filters']) ? $rule['filters'] : null], $group); continue; } list(, $pattern) = $rule; if (is_string($alias)) { if (isset($params['replace'])) { if (isset($params['prefix']) && !is_string($params['prefix'])) { $params['prefix'] = $params['replace']; } $alias = "{$params['prefix']}.{$alias}"; } if (isset($group['as'])) { $alias = "{$group['as']}.{$alias}"; } } $result[$alias] = $rule; if (isset($params['controller'])) { $result[$alias]['params']['controller'] = $params['controller']; } if (isset($params['filters']) && !isset($result[$alias][3])) { $result[$alias]['filters'] = $params['filters']; } if (!is_array($pattern)) { $value = $pattern; $pattern = []; $pattern[self::FILTER_PATH] = $value; } if (isset($pattern[self::FILTER_PATH])) { if (isset($params['replace'])) { $pattern[self::FILTER_PATH] = is_array($params['replace']) ? strtr($pattern[self::FILTER_PATH], $params['replace']) : str_replace('{url}', $params['replace'], $pattern[self::FILTER_PATH]); } if (isset($group[self::FILTER_PATH])) { $pattern[self::FILTER_PATH] = rtrim($group[self::FILTER_PATH], '/') . '/' . ltrim($pattern[self::FILTER_PATH], '/'); } } foreach ($pattern as $key => &$data) { if (is_array($data)) { foreach ($data as $k => $value) { if (is_string($value)) { $data[$k] = $this->parse($value, '.+'); } } continue; } $data = $key != self::FILTER_PATH ? $this->parse($data, '.+') : $this->parse($data); } $result[$alias][1] = $pattern; if (is_string($alias)) { $build = $this->buildAlias($pattern, $params, $group); $placeholders = ['self_path' => $this->request->getUrlWithoutArgs(), 'self_scheme' => $this->request->getScheme()]; foreach ($this->request->rawGet() ?: [] as $name => $placeholder) { $placeholders["self_query_{$name}"] = $placeholder; } Alias::setAlias(str_replace('/', '.', $alias), StringHelper::replace($build, $placeholders, false), false); $aliases[$alias] = $build; } } }
<?php // Config scope "frontend" $config = (require dirname(dirname(__DIR__)) . '/common/configs/configs.php'); \rock\base\Alias::setAlias('scope', '@frontend'); \rock\base\Alias::setAlias('views', '@frontend/views'); \rock\base\Alias::setAlias('runtime', '@frontend/runtime'); \rock\base\Alias::setAlias('ns', '@frontend.ns'); $request = new \rock\request\Request(); \rock\base\Alias::setAlias('link.home', $request->getHostInfo()); \rock\base\Alias::setAlias('link.ajax', '@link.home/ajax'); \rock\base\Alias::setAlias('email', 'support@' . $request->getHost()); $config['components'] = \rock\helpers\ArrayHelper::merge($config['components'], require __DIR__ . '/classes.php', require __DIR__ . '/models.php', require __DIR__ . '/controllers.php'); return $config;
\rock\base\Alias::setAlias('root', dirname(dirname(dirname(__DIR__)))); \rock\base\Alias::setAlias('rock', \rock\Rock::$dir); \rock\base\Alias::setAlias('vendor', '@root/vendor'); \rock\base\Alias::setAlias('assets', '@root/public/assets'); \rock\base\Alias::setAlias('web', '/assets'); \rock\base\Alias::setAlias('web.img', '/assets/images'); \rock\base\Alias::setAlias('app', '@root/apps'); \rock\base\Alias::setAlias('common', '@app/common'); \rock\base\Alias::setAlias('frontend', '@app/frontend'); \rock\base\Alias::setAlias('backend', '@app/backend'); \rock\base\Alias::setAlias('admin', '@backend'); // namespaces \rock\base\Alias::setAlias('common.ns', 'apps\\common'); \rock\base\Alias::setAlias('frontend.ns', 'apps\\frontend'); \rock\base\Alias::setAlias('backend.ns', 'apps\\backend'); \rock\base\Alias::setAlias('ns', '@common.ns'); // runtime \rock\base\Alias::setAlias('common.runtime', '@common/runtime'); // views \rock\base\Alias::setAlias('common.views', '@common/views'); \rock\base\Alias::setAlias('frontend.views', '@frontend/views'); // media \rock\base\Alias::setAlias('img', '@assets/images'); \rock\base\Alias::setAlias('images', '@img'); // links $request = new \rock\request\Request(); \rock\base\Alias::setAlias('link.home', $request->getHostInfo() ?: 'localhost'); \rock\base\Alias::setAlias('link.ajax', '@link.home/ajax'); \rock\base\Alias::setAlias('email', 'support@' . ($request->getHost() ?: 'localhost')); $config = \rock\helpers\ArrayHelper::merge(require \rock\base\Alias::getAlias('@rock/classes.php'), require __DIR__ . '/classes.php', require __DIR__ . '/controllers.php'); return ['components' => $config];