get() public method

After the plugin is retrieved from the service locator, inject the controller in the plugin every time it is requested. This is required because a controller can use a plugin and another controller can be dispatched afterwards. If this second controller uses the same plugin as the first controller, the reference to the controller inside the plugin is lost.
public get ( string $name, array $options = null ) : Zend\Stdlib\DispatchableInterface
$name string
$options array
return Zend\Stdlib\DispatchableInterface
 /**
  * Retourne le plugin url.
  *
  * @var \Zend\Mvc\Controller\PluginManager
  */
 public function url()
 {
     if (!$this->_url) {
         $this->_url = $this->_pluginManager->get('url');
     }
     return $this->_url;
 }
 public function testLoginProxiesToZfcUserAndReturnsNonModelInterface()
 {
     /** @var $forwardPlugin \Mockery\MockInterface */
     $forwardPlugin = $this->pm->get('forward');
     $forwardPlugin->shouldReceive('dispatch')->with('zfcuser', array('action' => 'login'))->andReturn('zfc-user-login');
     $result = $this->dispatch('login');
     $this->assertEquals('zfc-user-login', $result);
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  *
  * @param PluginManager $pluginManager
  *
  * @return Mailing
  */
 public function __invoke(PluginManager $pluginManager)
 {
     /* @var \Zend\Mvc\Controller\Plugin\FlashMessenger */
     $flashmessenger = $pluginManager->get('flashmessenger');
     /* @var \SD\Application\Controller\Plugin\SystemSettings */
     $systemsettings = $pluginManager->get('systemsettings');
     $plugin = new Mailing($flashmessenger, $systemsettings);
     return $plugin;
 }
Esempio n. 4
0
 public function testPlugin()
 {
     $config = (include __DIR__ . '/../../../../config/module.config.php');
     $plugins = new PluginManager(new Config($config['controller_plugins']));
     $plugin = $plugins->get('CsvExport');
     $this->assertInstanceOf('RdnCsv\\Controller\\Plugin\\CsvExport', $plugin);
     $anotherPlugin = $plugins->get('CsvExport');
     $this->assertFalse($plugin === $anotherPlugin);
 }
Esempio n. 5
0
 public function testPluginManagerInjectsControllerForExistingPlugin()
 {
     $controller1 = new SampleController();
     $pluginManager = new PluginManager();
     $pluginManager->setInvokableClass('samplePlugin', 'ZendTest\\Mvc\\Controller\\Plugin\\TestAsset\\SamplePlugin');
     $pluginManager->setController($controller1);
     // Plugin manager registers now instance of SamplePlugin
     $pluginManager->get('samplePlugin');
     $controller2 = new SampleController();
     $pluginManager->setController($controller2);
     $plugin = $pluginManager->get('samplePlugin');
     $this->assertEquals($controller2, $plugin->getController());
 }
Esempio n. 6
0
 /**
  * {@inheritdoc}
  *
  * @param PluginManager $pluginManager
  *
  * @return InitMetaTags
  */
 public function __invoke(PluginManager $pluginManager)
 {
     /* @var \Zend\ServiceManager\ServiceManager */
     $viewHelper = $pluginManager->getController()->getServiceLocator()->get('ViewHelperManager');
     /*
      * @var \Zend\View\Helper\Placeholder\Container
      */
     $placeholderContainer = $viewHelper->get('placeholder')->getContainer('customHead');
     /*
      * @var \Zend\View\Helper\HeadMeta
      */
     $headMeta = $viewHelper->get('HeadMeta');
     /*
      * @var \Zend\Http\PhpEnvironment\Request
      */
     $request = $pluginManager->getController()->getRequest();
     /*
      * @var \SD\Application\Controller\Plugin\SystemSettings
      */
     $systemSettings = $pluginManager->get('systemsettings');
     /*
      * @var InitMetaTags
      */
     $plugin = new InitMetaTags($placeholderContainer, $headMeta, $request, $systemSettings);
     return $plugin;
 }
Esempio n. 7
0
    public function setUp()
    {
        $plugins  = new ControllerPluginManager();
        $selector = $plugins->get('AcceptableViewModelSelector');

        $this->listener   = new AcceptListener($selector, array(
            'controllers' => array(
                'ZFTest\ContentNegotiation\TestAsset\ContentTypeController' => 'Json',
            ),
            'selectors' => array(
                'Json' => array(
                    'Zend\View\Model\JsonModel' => array(
                        'application/json',
                        'application/*+json',
                    ),
                ),
            ),
        ));
        $this->event      = new MvcEvent();
        $this->controller = new TestAsset\ContentTypeController();
        $this->event->setTarget($this->controller);
        $this->event->setRequest(new Request);
        $this->event->setRouteMatch(new RouteMatch(array(
            'controller' => __NAMESPACE__ . '\TestAsset\ContentTypeController',
        )));

        $this->controller->setEvent($this->event);
        $this->controller->setRequest($this->event->getRequest());
        $this->controller->setPluginManager($plugins);
    }
Esempio n. 8
0
 public function testGetWithConstrutorAndOptions()
 {
     $pluginManager = new PluginManager();
     $pluginManager->setInvokableClass('samplePlugin', 'ZendTest\\Mvc\\Controller\\Plugin\\TestAsset\\SamplePluginWithConstructor');
     $plugin = $pluginManager->get('samplePlugin', 'foo');
     $this->assertEquals($plugin->getBar(), 'foo');
 }
Esempio n. 9
0
 public function testCanCreateByFactoryWithConstrutor()
 {
     $pluginManager = new PluginManager();
     $pluginManager->setFactory('samplePlugin', 'ZendTest\\Mvc\\Controller\\Plugin\\TestAsset\\SamplePluginWithConstructorFactory');
     $plugin = $pluginManager->get('samplePlugin', 'foo');
     $this->assertInstanceOf('\\ZendTest\\Mvc\\Controller\\Plugin\\TestAsset\\SamplePluginWithConstructor', $plugin);
     $this->assertEquals($plugin->getBar(), 'foo');
 }
Esempio n. 10
0
 /**
  * {@inheritdoc}
  *
  * @param PluginManager $pluginManager
  *
  * @return GetUrlParams
  */
 public function __invoke(PluginManager $pluginManager)
 {
     /*
      * @var \Zend\Mvc\Controller\Plugin\Params
      */
     $params = $pluginManager->get('params');
     $plugin = new GetUrlParams($params);
     return $plugin;
 }
 public function setUp()
 {
     $plugins = new ControllerPluginManager(new ServiceManager());
     $selector = $plugins->get('AcceptableViewModelSelector');
     $this->listener = new AcceptListener($selector, ['controllers' => ['ZFTest\\ContentNegotiation\\TestAsset\\ContentTypeController' => 'Json'], 'selectors' => ['Json' => ['Zend\\View\\Model\\JsonModel' => ['application/json', 'application/*+json']]]]);
     $this->event = new MvcEvent();
     $this->controller = new TestAsset\ContentTypeController();
     $this->event->setTarget($this->controller);
     $this->event->setRequest(new Request());
     $this->event->setRouteMatch($this->createRouteMatch(['controller' => __NAMESPACE__ . '\\TestAsset\\ContentTypeController']));
     $this->controller->setEvent($this->event);
     $this->controller->setRequest($this->event->getRequest());
     $this->controller->setPluginManager($plugins);
 }
 /**
  * @param $className
  *
  * @return object
  * @throws \Exception
  */
 private function buildGraph($className)
 {
     if ($this->enableObjectGraphDebug) {
         echo 'Building an object from the class: ' . $className . "<br />";
     }
     try {
         $reflection = new \ReflectionClass($className);
     } catch (\Exception $e) {
         if ($this->enableObjectGraphDebug) {
             echo 'Could not build a reflection class for ' . $className . "<br />";
         }
         return false;
     }
     if (!$reflection->getConstructor()) {
         if ($this->enableObjectGraphDebug) {
             echo 'We have build an object for class ' . $className . "<br />";
         }
         return new $className();
     }
     $constructorParameters = $reflection->getConstructor()->getParameters();
     $dependencies = [];
     foreach ($constructorParameters as $param) {
         try {
             $paramClassName = $param->getClass();
         } catch (\Exception $e) {
             throw new \Exception('Could not create dependency class "' . $param->getName() . '" for the currently building class: ' . $className);
         }
         if (!$paramClassName) {
             switch (true) {
                 case $this->controllerPluginManager->has($param->name, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'The parameter "' . $param->name . '" exists in Controller Manager' . "<br />";
                     }
                     $dependencies[] = $this->controllerPluginManager->get($param->name);
                     break;
                 case $this->serviceManager->has($param->name, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'The parameter "' . $param->name . '" exists in Service Manager' . "<br />";
                     }
                     $dependencies[] = $this->serviceManager->get($param->name);
                     break;
                 default:
                     if ($param->isOptional()) {
                         $dependencies[] = $param->getDefaultValue();
                     } else {
                         if ($this->enableObjectGraphDebug) {
                             echo 'The parameter "' . $param->name . '" does not exist in (any) Service Manager' . "<br />";
                         }
                         echo 'The parameter "' . $param->name . '" does not exist in the Service Manager' . "<br />";
                         die;
                     }
                     break;
             }
         } else {
             if ($this->enableObjectGraphDebug) {
                 echo 'Does the SM have an object for ' . $param->getClass()->name . "<br />";
             }
             switch (true) {
                 case $this->controllerPluginManager->has($param->getClass()->name, false, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'It does in the Controller Plugin Manager' . "<br />";
                     }
                     $dependencies[] = $this->controllerPluginManager->get($param->getClass()->name);
                     break;
                 case $this->viewHelperManager->has($param->getClass()->name, false, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'It does in the View Helper Manager' . "<br />";
                     }
                     $dependencies[] = $this->viewHelperManager->get($param->getClass()->name);
                     break;
                 case $this->formElementManager->has($param->getClass()->name, false, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'It does in the Form Element Manager' . "<br />";
                     }
                     $dependencies[] = $this->formElementManager->get($param->getClass()->name);
                     break;
                 case $this->serviceManager->has($param->getClass()->name, false, false):
                     if ($this->enableObjectGraphDebug) {
                         echo 'It does in the Service Manager' . "<br />";
                     }
                     $name = $param->getClass()->name;
                     if ($this->serviceManager->hasAlias($name)) {
                         $config = $this->serviceManager->get('config')['service_manager'];
                         $name = $config['aliases'][$name];
                     }
                     $dependencies[] = $this->serviceManager->get($name);
                     break;
                 default:
                     if ($this->enableObjectGraphDebug) {
                         echo 'No it It does not have an object' . "<br />";
                     }
                     if ($param->getClass()->isInterface()) {
                         continue;
                     }
                     $dependencies[] = $this->buildGraph($param->getClass()->name);
                     break;
             }
         }
     }
     $instance = $reflection->newInstanceArgs($dependencies);
     if (in_array($className, $this->serviceManager->get('config')['service_manager']['shared'])) {
         $this->serviceManager->setAllowOverride(true);
         $this->serviceManager->setService($className, $instance);
         $this->serviceManager->setAllowOverride(false);
     }
     if ($this->enableObjectGraphDebug) {
         echo 'We have build an object for class ' . $className . "<br />";
     }
     if ($this->enableObjectGraphDebug) {
         echo ' ==== ' . "<br />";
     }
     return $instance;
 }
Esempio n. 13
0
 /**
  * @param \Zend\Http\PhpEnvironment\Request      $request
  * @param \Zend\Mvc\MvcEvent                     $mvcEvent
  * @param \Phpro\SmartCrud\Service\DeleteService $smartService
  * @param \Phpro\SmartCrud\Service\SmartServiceResult  $smartResult
  * @param \Zend\Mvc\Controller\PluginManager     $pluginManager
  * @param \Zend\Mvc\Controller\Plugin\Redirect   $redirectPlugin
  * @param \Zend\Mvc\Controller\Plugin\Params     $params
  */
 public function it_should_handle_valid_post_to_a_delete_action($request, $mvcEvent, $smartService, $smartResult, $pluginManager, $redirectPlugin, $params)
 {
     $postParameters = array('property' => 'value');
     $action = 'delete';
     $smartResult->isSuccessFull()->shouldBeCalled()->willReturn(true);
     $smartService->run(Argument::any(), Argument::exact($postParameters))->shouldBeCalled()->willReturn($smartResult);
     $pluginManager->get(Argument::exact('params'), null)->shouldBeCalled()->willReturn($params);
     $params->__invoke()->willReturn($params);
     $params->fromRoute(Argument::exact('id'), null)->shouldBeCalled()->willReturn(1);
     $pluginManager->get(Argument::exact('redirect'), null)->shouldBeCalled()->willReturn($redirectPlugin);
     $redirectPlugin->toRoute(Argument::exact(null), Argument::exact(array('action' => 'list')), true)->shouldBeCalled()->willReturn('mockRedirect');
     $this->setSmartService($smartService);
     $this->mockValidPost($request, $mvcEvent, $pluginManager, $params, $action, $postParameters);
 }
Esempio n. 14
0
 /**
  * Get plugin instance
  *
  * @param string     $name    Name of plugin to return
  * @param null|array $options Options to pass to plugin constructor (if not already instantiated)
  *
  * @return mixed
  */
 public function plugin($name, array $options = null)
 {
     return $this->pluginManager->get($name, $options);
 }
Esempio n. 15
0
 /**
  * @return \Zend\Mvc\Plugin\FlashMessenger\FlashMessenger
  */
 protected function getFlashMessenger()
 {
     return $this->controllerPluginManager->get('flashMessenger');
 }