Пример #1
0
 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);
     }
 }
Пример #2
0
 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);
 }
Пример #3
0
 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;
         }
     }
 }
Пример #4
0
<?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;
Пример #5
0
\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];