- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\Mvc\Service;
-
- use Zend\Console\Console;
- use Zend\Mvc\Exception;
- use Zend\Mvc\Router\RouteMatch;
- use Zend\ServiceManager\ConfigInterface;
- use Zend\ServiceManager\ServiceLocatorInterface;
- use Zend\View\Helper as ViewHelper;
- use Zend\View\Helper\HelperInterface as ViewHelperInterface;
-
- class ViewHelperManagerFactory extends AbstractPluginManagerFactory
- {
- const PLUGIN_MANAGER_CLASS = 'Zend\View\HelperPluginManager';
-
- /**
- * An array of helper configuration classes to ensure are on the helper_map stack.
- *
- * @var array
- */
- protected $defaultHelperMapClasses = array(
- 'Zend\Form\View\HelperConfig',
- 'Zend\I18n\View\HelperConfig',
- 'Zend\Navigation\View\HelperConfig'
- );
-
- /**
- * Create and return the view helper manager
- *
- * @param ServiceLocatorInterface $serviceLocator
- * @return ViewHelperInterface
- * @throws Exception\RuntimeException
- */
- public function createService(ServiceLocatorInterface $serviceLocator)
- {
- $plugins = parent::createService($serviceLocator);
-
- foreach ($this->defaultHelperMapClasses as $configClass) {
- if (is_string($configClass) && class_exists($configClass)) {
- $config = new $configClass;
-
- if (!$config instanceof ConfigInterface) {
- throw new Exception\RuntimeException(sprintf(
- 'Invalid service manager configuration class provided; received "%s", expected class implementing %s',
- $configClass,
- 'Zend\ServiceManager\ConfigInterface'
- ));
- }
-
- $config->configureServiceManager($plugins);
- }
- }
-
- // Configure URL view helper with router
- $plugins->setFactory('url', function ($sm) use ($serviceLocator) {
- $helper = new ViewHelper\Url;
- $router = Console::isConsole() ? 'HttpRouter' : 'Router';
- $helper->setRouter($serviceLocator->get($router));
-
- $match = $serviceLocator->get('application')
- ->getMvcEvent()
- ->getRouteMatch()
- ;
-
- if ($match instanceof RouteMatch) {
- $helper->setRouteMatch($match);
- }
-
- return $helper;
- });
-
- $plugins->setFactory('basepath', function ($sm) use ($serviceLocator) {
- $config = $serviceLocator->has('Config') ? $serviceLocator->get('Config') : array();
- $basePathHelper = new ViewHelper\BasePath;
- if (isset($config['view_manager']) && isset($config['view_manager']['base_path'])) {
- $basePathHelper->setBasePath($config['view_manager']['base_path']);
- } else {
- $request = $serviceLocator->get('Request');
- if (is_callable(array($request, 'getBasePath'))) {
- $basePathHelper->setBasePath($request->getBasePath());
- }
- }
-
- return $basePathHelper;
- });
-
- /**
- * Configure doctype view helper with doctype from configuration, if available.
- *
- * Other view helpers depend on this to decide which spec to generate their tags
- * based on. This is why it must be set early instead of later in the layout phtml.
- */
- $plugins->setFactory('doctype', function ($sm) use ($serviceLocator) {
- $config = $serviceLocator->has('Config') ? $serviceLocator->get('Config') : array();
- $config = isset($config['view_manager']) ? $config['view_manager'] : array();
- $doctypeHelper = new ViewHelper\Doctype;
- if (isset($config['doctype']) && $config['doctype']) {
- $doctypeHelper->setDoctype($config['doctype']);
- }
- return $doctypeHelper;
- });
-
- return $plugins;
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|