scorpion-ds
Новичок
У меня возникла вроде вполне банальная задача, но найти красивого решения не не смог.
У меня есть два маршрута:
cs_blog_rubric - показывает текущую рубрику и посты в ней;
cs_blog_show - показывает сам пост.
Также строится меню с использованием "KNP Menu", оно вполне успешно показывает текущий пункт, когда мы находимся в рубрике, но когда мы переходим уже к посту, то разумеется оно не может отследить текущий раздел.
Так как он у меня "упоминается" в URL поста:
/app_dev.php/blog/rubrika-3/
/app_dev.php/blog/rubrika-3/prosto-novost_3.html
То я с использую функцию strpos:
оно то все работает, но мне кажется такое решение не очень красивое и должен быть более "симфоничное" решение.
Подскажите другое решение данной задачи?
У меня есть два маршрута:
Код:
cs_blog_rubric:
path: /{rubric_slug}/
defaults: { _controller: CSBlogBundle:Default:index }
requirements:
_method: GET
rubric_slug: "[0-9a-zA-Z_\-]+"
cs_blog_show:
pattern: /{rubric_slug}/{slug}_{id}.{_format}
defaults: { _controller: CSBlogBundle:Default:show }
requirements:
_method: GET
_format: html
rubric_slug: "[0-9a-zA-Z_\-]+"
id: \d+
cs_blog_show - показывает сам пост.
Также строится меню с использованием "KNP Menu", оно вполне успешно показывает текущий пункт, когда мы находимся в рубрике, но когда мы переходим уже к посту, то разумеется оно не может отследить текущий раздел.
Так как он у меня "упоминается" в URL поста:
/app_dev.php/blog/rubrika-3/
/app_dev.php/blog/rubrika-3/prosto-novost_3.html
То я с использую функцию strpos:
PHP:
public function rubricSidebarMenu(FactoryInterface $factory) {
$menuItems = $this->container->get('menu')->getRubricSidebarMenu();
$menu = $factory->createItem('root');
$request = $this->container->get('request')->createFromGlobals();
foreach ($menuItems as $item)
{
$menu->addChild($item->getTitle(), array('route' => 'cs_blog_rubric', 'routeParameters' => array('rubric_slug' => $item->getSlug())));
if (strpos($request->getRequestUri(), $menu->getChild($item->getTitle())->getUri()) === 0)
{
$menu->getChild($item->getTitle())->setCurrent(true);
}
}
return $menu;
}
Подскажите другое решение данной задачи?