0

I have the custom module with product collection and custom router.

for example i want to have link https://domain.com/gaires/something

Router code:

namespace UseApp\Gaires\Controller;
class Router implements \Magento\Framework\App\RouterInterface
{
    protected $actionFactory;
    protected $_response;


    public function __construct(
        \Magento\Framework\App\ActionFactory $actionFactory,
        \Magento\Framework\App\ResponseInterface $response
    ) {
        $this->actionFactory = $actionFactory;
        $this->_response = $response;
    }

    public function match(\Magento\Framework\App\RequestInterface $request)
    {
        $exlpoded = array_filter(explode('/', trim($request->getPathInfo()) ) );
        if($exlpoded && $exlpoded[1]=='gaires' && count($exlpoded)>=2){
            $request->setModuleName('gaires')
                ->setControllerName('index')
                ->setActionName('gaire')
                ->setParam('q', urldecode($exlpoded[2]));
        }
    }
}

Router working fine.

In the page (controller) gaires/index/gaire I have product collection with toolbar (sorter, limeter, pagger )

The problem is that the bad url address in the pager, sorter and limiter links.

For example: http://domain.com/gaires/index/gaire/q/something/?p=2

address must be: http://domain.com/gaires/something?p=2

If I change the adres in browser url field manually (http://domain.com/gaires/something?p=2) Router and collection working fine, but toolbar links also no

How can this be fixed?

0

after

$request->setModuleName('gaires')
        ->setControllerName('index')
        ->setActionName('gaire')
        ->setParam('q', urldecode($exlpoded[2]));

You add

$request->setAlias(\Magento\Framework\Url::REWRITE_REQUEST_PATH_ALIAS, YOUR_NEW_PATH_HERE);

That "YOUR_NEW_PATH_HERE" is what the pagination is looking at.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.