6

Originally I was trying to copy over all of the xml from vendor/magento/module-catalog/view/frontend/layout/catalog_category_view.xml into my own xml file. This route was not working.

So I have now changed to where I am extending my controller from \Magento\Catalog\Controller\Category\View.

<?php
namespace My\Custom\Controller\ProductGrid;

use Magento\Framework\App\Action\Context;
use Magento\Catalog\Model\Design;
use Magento\Catalog\Model\Session;
use Magento\Framework\Registry;
use Magento\Store\Model\StoreManagerInterface;
use Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\Controller\Result\ForwardFactory;
use Magento\Catalog\Api\CategoryRepositoryInterface;
use Magento\Catalog\Model\Layer\Resolver;


/**
 * Class HeaderA
 * @package My\Custom\Controller\Header
 */
class ProductGridA extends \Magento\Catalog\Controller\Category\View
{
    /**
     * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface|\Magento\Framework\View\Result\Page
     */
    public function execute()
    {
        return parent::execute();
    }
}

And then inside my xml file I have

<?xml version="1.0"?>

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="catalog_category_view"/>
    <body>

    </body>
</page>

My page is loading, but the content is coming out blank. I believe I need to set a category to be pulled up somehow but I can not figure out the best way to do this.

1 Answer 1

1

Controller of your module has to extend Magento\Catalog\Controller\Category\View

Also, instead of copypasting layout file use handle update and use references to change parameters of blocks.

9
  • Ah okay, so what would I make the handle update be in this case? catalog_category_view?
    – Metropolis
    Commented Jan 17, 2018 at 16:06
  • I think I got it close, but I am getting a 404 error on the view now.
    – Metropolis
    Commented Jan 17, 2018 at 17:03
  • @Metropolis do you have frontend router set up?
    – czs
    Commented Jan 18, 2018 at 11:53
  • Yes, its working fine, until I change the controller parent. I basically just created a blank class that is extending from \Magento\Catalog\Controller\Category\View. I basically want it to reuse the constructor and the execute function from the parent I would assume. So I think that may be why I am getting the 404. I may need to do something more inside the execute function of the child.
    – Metropolis
    Commented Jan 18, 2018 at 18:43
  • @Metropolis that's propably the case since execute method of Category View controller is checking request for parameter and checks if it points to correct category - if not then it redirects to 404.
    – czs
    Commented Jan 19, 2018 at 14:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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