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
コード例 #1
0
 /**
  * Retourne le plugin url.
  *
  * @var \Zend\Mvc\Controller\PluginManager
  */
 public function url()
 {
     if (!$this->_url) {
         $this->_url = $this->_pluginManager->get('url');
     }
     return $this->_url;
 }
コード例 #2
0
 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);
 }
コード例 #3
0
ファイル: MailingFactory.php プロジェクト: samsonasik/unnamed
 /**
  * {@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;
 }
コード例 #4
0
ファイル: CsvExportTest.php プロジェクト: fabiopaiva/rdn-csv
 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);
 }
コード例 #5
0
ファイル: PluginManagerTest.php プロジェクト: haoyanfei/zf2
 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());
 }
コード例 #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;
 }
コード例 #7
0
ファイル: AcceptListenerTest.php プロジェクト: jbarentsen/drb
    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);
    }
コード例 #8
0
ファイル: PluginManagerTest.php プロジェクト: rodriquelca/zf2
 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');
 }
コード例 #9
0
ファイル: PluginManagerTest.php プロジェクト: nieldm/zf2
 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');
 }
コード例 #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;
 }
コード例 #11
0
 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;
 }
コード例 #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);
 }
コード例 #14
0
ファイル: Script.php プロジェクト: gotcms/gotcms
 /**
  * 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);
 }
コード例 #15
0
ファイル: UserRole.php プロジェクト: kokspflanze/PServerCore
 /**
  * @return \Zend\Mvc\Plugin\FlashMessenger\FlashMessenger
  */
 protected function getFlashMessenger()
 {
     return $this->controllerPluginManager->get('flashMessenger');
 }