I'm trying to create a custom widget by extending the existing "Banner Rotator" widget. Something similar to this.
I placed the widget.xml
in my module and created a class extending \Magento\Banner\Block\Widget\Banner
. Then my custom widget started to appear in BO and works fine (works just like the Magento widget because I haven't customized it yet).
Now I intend to do some additional manipulations to the rotator using the applied layered navigation filters. To do that I'm trying to inject the \Magento\Catalog\Model\Layer\Resolver
in to my class. But it fails with this error message.
Fatal error: Uncaught TypeError: Argument 4 passed to MyNamespace\Module\Block\Widget\Banner::__construct() must be an instance of Magento\Catalog\Model\Layer\Resolver, none given, called in /var/www/html/var/generation/MyNamespace/Module/Block/Widget/Banner/Interceptor.php on line 14 and defined in /var/www/html/app/code/MyNamespace/Module/Block/Widget/Banner.php on line 12
Looks like I cannot have a fourth argument in my class.
My class looks like below.
namespace MyNamespace\Module\Block\Widget;
class Banner extends \Magento\Banner\Block\Widget\Banner
{
protected $layerResolver;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Banner\Model\ResourceModel\Banner $resource,
array $data = [],
\Magento\Catalog\Model\Layer\Resolver $resolver
)
{
parent::__construct(
$context,
$resource,
[]
);
$this->layerResolver = $resolver;
}
}
How do I add the 4th argument?