This error is affecting the homepage after I changed the src="" attribute in image tag.
"Error filtering template: Notice: Undefined index: url in
[root]/vendor/magento/module-widget/Model/Template/Filter.php on line
145"
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Widget\Model\Template;
/**
* Template Filter Model
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class Filter extends \Magento\Cms\Model\Template\Filter
{
/**
* @var \Magento\Widget\Model\ResourceModel\Widget
*/
protected $_widgetResource;
/**
* @var \Magento\Widget\Model\Widget
*/
protected $_widget;
/**
* @param \Magento\Framework\Stdlib\StringUtils $string
* @param \Psr\Log\LoggerInterface $logger
* @param \Magento\Framework\Escaper $escaper
* @param \Magento\Framework\View\Asset\Repository $assetRepo
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Variable\Model\VariableFactory $coreVariableFactory
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Framework\View\LayoutInterface $layout
* @param \Magento\Framework\View\LayoutFactory $layoutFactory
* @param \Magento\Framework\App\State $appState
* @param \Magento\Framework\UrlInterface $urlModel
* @param \Pelago\Emogrifier $emogrifier
* @param \Magento\Variable\Model\Source\Variables $configVariables
* @param \Magento\Widget\Model\ResourceModel\Widget $widgetResource
* @param \Magento\Widget\Model\Widget $widget
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
\Magento\Framework\Stdlib\StringUtils $string,
\Psr\Log\LoggerInterface $logger,
\Magento\Framework\Escaper $escaper,
\Magento\Framework\View\Asset\Repository $assetRepo,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Variable\Model\VariableFactory $coreVariableFactory,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\View\LayoutInterface $layout,
\Magento\Framework\View\LayoutFactory $layoutFactory,
\Magento\Framework\App\State $appState,
\Magento\Framework\UrlInterface $urlModel,
\Pelago\Emogrifier $emogrifier,
\Magento\Variable\Model\Source\Variables $configVariables,
\Magento\Widget\Model\ResourceModel\Widget $widgetResource,
\Magento\Widget\Model\Widget $widget
) {
$this->_widgetResource = $widgetResource;
$this->_widget = $widget;
parent::__construct(
$string,
$logger,
$escaper,
$assetRepo,
$scopeConfig,
$coreVariableFactory,
$storeManager,
$layout,
$layoutFactory,
$appState,
$urlModel,
$emogrifier,
$configVariables
);
}
/**
* General method for generate widget
*
* @param string[] $construction
* @return string
*/
public function generateWidget($construction)
{
$params = $this->getParameters($construction[2]);
// Determine what name block should have in layout
$name = null;
if (isset($params['name'])) {
$name = $params['name'];
}
if (isset($this->_storeId) && !isset($params['store_id'])) {
$params['store_id'] = $this->_storeId;
}
// validate required parameter type or id
if (!empty($params['type'])) {
$type = $params['type'];
} elseif (!empty($params['id'])) {
$preConfigured = $this->_widgetResource->loadPreconfiguredWidget($params['id']);
$type = $preConfigured['widget_type'];
$params = $preConfigured['parameters'];
} else {
return '';
}
// we have no other way to avoid fatal errors for type like 'cms/widget__link', '_cms/widget_link' etc.
$xml = $this->_widget->getWidgetByClassType($type);
if ($xml === null) {
return '';
}
// define widget block and check the type is instance of Widget Interface
$widget = $this->_layout->createBlock($type, $name, ['data' => $params]);
if (!$widget instanceof \Magento\Widget\Block\BlockInterface) {
return '';
}
return $widget->toHtml();
}
/**
* Generate widget
*
* @param string[] $construction
* @return string
*/
public function widgetDirective($construction)
{
return $this->generateWidget($construction);
}
/**
* Retrieve media file URL directive
*
* @param string[] $construction
* @return string
*/
public function mediaDirective($construction)
{
$params = $this->getParameters(html_entity_decode($construction[2], ENT_QUOTES));
return $this->_storeManager->getStore()
->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA) . $params['url'];
}
}
[![enter image description here][1]][1]
I tried using the problems tab on Vscode, if solution is found, please explain which error lead to solution
[1]: https://i.stack.imgur.com/z8tHK.png
Best Answer
The
$params
array doesn't have the key'url'
.