Ich habe ein Plugin welches auf der neuen Shopware Version 5.5 nach dem Installieren einen Fehler verursacht. Es kann nicht mehr kompiliert werden.
Die Fehlermeldung lautet: You have requested a non-existent service „shop“
Der Fehler erscheint nicht, wenn im __construct die Abfrage nach der Shop-ID für den Scobe entfernt wird:
Aus diesem Code-Schnipsel
$shop = Shopware()->Shop();
$this->config = $configReader->getByPluginName($pluginName, $shop);
wird dann dies hier ohne Abfrage des Subshops:
$this->config = $configReader->getByPluginName($pluginName);
CODE:
Subscriber/Subscriber.php
pluginPath = $pluginPath;
$shop = Shopware()->Shop();
$this->config = $configReader->getByPluginName($pluginName, $shop);
}
public static function getSubscribedEvents()
{
return [
'Theme_Inheritance_Template_Directories_Collected' => ['onTemplateDirectoriesCollect', -10],
'Enlight_Controller_Action_PostDispatchSecure_Widgets_Emotion' => 'onFrontendPostDispatch',
'Theme_Compiler_Collect_Plugin_Less' => 'onCollectLessFiles',
'Theme_Compiler_Collect_Plugin_Javascript' => 'onCollectJsFiles'
];
}
public function onTemplateDirectoriesCollect(EventArgs $args) {
$dirs = $args->getReturn();
$dirs[] = $this->pluginPath . '/Resources/views/';
$args->setReturn( $dirs );
}
/**
* Provide the needed javascript files
*
* @return ArrayCollection
*/
public function onCollectJsFiles()
{
$jsFiles = [
$this->pluginPath . '/Resources/views/frontend/_public/src/js/jquery.pluginname.js'
];
return new ArrayCollection($jsFiles);
}
/**
* @return ArrayCollection
*/
public function onCollectLessFiles()
{
$less = new LessDefinition(
[
'less-variable' => $this->config['lessVariable'],
],
[
$this->pluginPath . '/Resources/views/frontend/_public/src/less/all.less',
],
$this->pluginPath
);
return new ArrayCollection([$less]);
}
public function onFrontendPostDispatch(EventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->get('subject');
$view = $controller->View();
$config = array(
'configParameter' => $this->config['configParameter'],
);
$view->assign('prefixPluginName', $config)
}
}
Ressources/services.xml
%prefix_plugin_name.plugin_name%
%prefix_plugin_name.plugin_dir%
Fehlermeldung beim Kompilieren
Während der Bearbeitung von Shop "Demoshop" ist ein Fehler aufgetreten: You have requested a non-existent service "shop". Did you mean one of these: "customer_search.dbal.condition.ordered_in_shop_handler", "customer_search.dbal.condition.registered_in_shop_handler", "shop_page_menu", [...] "shopware_storefront.vote_hydrator_dbal", "shopware_storefront.vote_service", "shop"?