Maciej
Maciej

Reputation: 314

How to get URL params in ViewHelper with Zend Framework 2

I've created simple ViewHelper with http://blog.evan.pro/creating-a-simple-view-helper-in-zend-framework-2. How to get URL params in this helper? $this->params('param') works only in controllers...

Upvotes: 1

Views: 5648

Answers (2)

Rajen K Bhagat
Rajen K Bhagat

Reputation: 232

In view helper you have to add code like this:

Module.php

 'factories' => array(
            'myViewHelper' => function($pm) {
                return new MyView($pm);
            },

        )

Now in Helper Class file your have to add following piece of code

public function __construct($pm) {
    $this->pluginManager = $pm;
    $this->serviceLocator = $this->pluginManager->getServiceLocator();
    $this->routeMatch = $this->serviceLocator->get('Router')->match($this->serviceLocator->get('Request'));
}
public function __invoke() {
    $params = $this->getRouteMatch()->getParams();

}

Here $params will return all route params in array formate.

Upvotes: 1

drew010
drew010

Reputation: 69927

Given the code from the blog post, you can use this code from inside the view helper:

$this->request->getPost('param');  // post parameter

// or

$this->request->getQuery('param'); // query parameter

The code from the example receives an instance of the Zend\Http\Request object for the current request and stores it in the property called request of the view helper so you can use the request property to access the Request object and information from it.

Upvotes: 2

Related Questions