public function pageBySlug($slug, $lang = null, $lifeTime = 60) { $lang = $lang ? $lang : LANG; $pageResult = $this->getDi()->get('cacheManager')->load([Keys::PAGE, $slug, $lang], function () use($slug, $lang, $lifeTime) { $columns = ['p.*']; foreach ($this->translateFields as $field) { $columns[] = "(SELECT t.value FROM [{$this->translateModel}] AS t WHERE t.foreign_id = p.id AND t.lang = '{$lang}' AND t.key = '{$field}') AS {$field}"; } $qb = $this->modelsManager->createBuilder()->columns($columns)->addFrom('Page\\Model\\Page', 'p')->where('p.slug = :slug:', ['slug' => $slug]); $result = $qb->getQuery()->execute()->getFirst(); return $result; }, $lifeTime); return $pageResult; }
public function contactsAction() { $pageHelper = new PageHelper(); $pageResult = $pageHelper->pageBySlug('contacts'); if (!$pageResult) { throw new Exception("Page 'contacts' not found"); } $this->helper->title()->append($pageResult->meta_title); $this->helper->meta()->set('description', $pageResult->meta_description); $this->helper->meta()->set('keywords', $pageResult->meta_keywords); $this->helper->menu->setActive('contacts'); $this->view->text = $pageResult->text; }