Intereting Posts
Как получить идентификатор заряда после создания подписки с помощью Stripe? Как я могу выбрать конкретные столбцы с createQueryBuilder в ORM Symfony2? Возвращает переменную Laravel к контроллеру Как добавить поле на странице продукта WooCommerce? Ошибка при отправке электронной почты с помощью phpmailer – Ошибка при передаче SMTP-сообщений: данные не принимаются Как кодировать и хранить ограничения динамического разрешения? MySQL – структура многоуровневой категории Использование другой таблицы для проверки подлинности в Laravel Как синхронизировать покупку iphone в приложении с веб-сайтом чтение docx (Office Open XML) в PHP Проблема с PHP-сессиями в WordPress с постоянными значениями по умолчанию Вкладки Drupal $, не включая редактирование / ревизии / рабочий процесс сообщение как страница на стене facebook Случай переключения PHP $ _GET и значение переменной switch $ _GET Как я могу заполнить массив javascript значениями из базы данных с помощью PHP?

ZF2 Получить параметры на заводе

У меня динамическая категория навигации. На фабрике навигации я хочу получить параметр с маршрута. Как я могу это сделать?

На мой взгляд

<?php echo $this->navigation('CategoryNavigation')->menu()->setUlClass('list-group'); ?> 

В моем module.php:

  public function getServiceConfig() { return array( 'factories' => array( 'CategoryNavigation' => 'Application\Navigation\CategoryNavigation', ) ); } 

Это моя судоходная фабрика. Мне нужно получить слизню с маршрута, где определен {{store slug}} (2x).

  <?php namespace Application\Navigation; use Zend\ServiceManager\ServiceLocator; use Zend\ServiceManager\ServiceLocatorInterface; use Zend\Navigation\Service\DefaultNavigationFactory; class CategoryNavigation extends DefaultNavigationFactory { protected $sl; protected function getPages(ServiceLocatorInterface $serviceLocator) { if (null === $this->pages) { $em = $serviceLocator->get('Doctrine\ORM\EntityManager'); $storerepository = $em->getRepository('ApplicationShared\Entity\Store'); $store = $storerepository->findOneBy(array('slug' => '{{ store slug }}')); $fetchMenu = $store->getCategories(); $configuration['navigation'][$this->getName()] = $this->buildNavigation($fetchMenu); if (!isset($configuration['navigation'])) { throw new Exception\InvalidArgumentException('Could not find navigation configuration key'); } if (!isset($configuration['navigation'][$this->getName()])) { throw new Exception\InvalidArgumentException(sprintf( 'Failed to find a navigation container by the name "%s"', $this->getName() )); } $application = $serviceLocator->get('Application'); $routeMatch = $application->getMvcEvent()->getRouteMatch(); $router = $application->getMvcEvent()->getRouter(); $pages = $this->getPagesFromConfig($configuration['navigation'][$this->getName()]); // $this->pages = $this->injectComponents($pages, $routeMatch, $router); } return $this->pages; } protected function buildNavigation($elements, $parentid = null){ foreach ($elements as $index => $element) { if (!$element->getParent()) { $branch[$element->getCategoryName()] = $this->navigationItem($element); } } return $branch; } protected function navigationItem($element){ $branch['label'] = $element->getCategoryName(); $branch['route'] = 'store/type/catalog'; $branch['params'] = array('slug' => '{{ store slug }}','category' => $element->getSlug()); if(count($element->getChildren()) > 0){ foreach($element->getChildren() as $element){ $branch['pages'][] = $this->navigationItem($element); } } return $branch; } } 

Или есть лучший способ добиться этого?

Ищите несколько часов, в конце концов спрашивая об этом в стеке, и теперь я нахожу ответ через полчаса.

Мне просто пришлось объявить об этом на моем заводе

 $router = $serviceLocator->get('router'); $request = $serviceLocator->get('request'); // Get the router match $routerMatch = $router->match($request); $this->slug = $routerMatch->getParam("slug"); 

Или для ZF3:

 $container->get('Application')->getMvcEvent()->getRouteMatch()->getParam('whateverYouWant', false);