Hey,
ich habe eine lokale Anwendung und möchte diese jetzt in Shopware 6 integrieren. In dieser nutze ich auch viel PHP.
Dieses versuche ich gerade in mein Plugin einzubinden. Jedoch ohne Erfolg.
Ich finde auch kaum etwas dazu, wie ich jetzt den PHP-Code in Shopware 6 einbinden kann. Ich habe jetzt einen neuen Ordner „Custom“ in Designer/src/Storefront/ erstellt und darin dann eine PHP-File erstellt.
In dieser PHP-File habe ich dann den entsprechenden Namespace hinzugefügt und die Klasse erstellt:
namespace ProductDesigner\Storefront\Custom;
class MotiveMenu{
public function __construct()
{
}
public static function getAllMotive(){}
Danach habe ich in der services.xml ein neues Argument zum ProductDesignerController-Service hinzugefügt:
<service id="ProductDesigner\Storefront\Controller\ProductDesignerController" public="true">
<argument type="service" id="ProductDesigner\Storefront\Page\ProductDesigner\ProductDesignerPageLoader" />
**<argument type="service" id="ProductDesigner\Storefront\Custom\MotiveMenu" />**
<call method="setContainer">
<argument type="service" id="service_container"/>
</call>
</service>
Danach im ProductDesignerController die Klasse MotiveMenu hinzugefügt und die Funktion ausgeführt und den Rückgabewert dann der renderStorefront-Funktion als Parameter übergeben.
**use ProductDesigner\Storefront\Custom\MotiveMenu as MotiveMenu;**
/**
* @Route(defaults={"_routeScope"={"storefront"}})
*/
class ProductDesignerController extends StorefrontController{
private ProductDesignerPageLoader $productDesignerPageLoader;
public function __construct(ProductDesignerPageLoader $productDesignerPageLoader){
$this->productDesignerPageLoader = $productDesignerPageLoader;
}
/**
* @Route("/designer", name="frontend.productDesigner.show", methods={"GET"})
*/
public function showProductDesigner(Request $request, SalesChannelContext $context) : Response{
$page = $this->productDesignerPageLoader->load($request, $context);
**$motiveMenu = MotiveMenu::getAllMotive();**
return $this->renderStorefront("@ProductDesigner/storefront/page/productDesigner/index.html.twig", [
'page' => $page,
**'motiveMenu' => $motiveMenu**
]);
}
}
Wenn ich jetzt die Seite aufrufe erhalte ich folgende Fehlermeldung: The service „ProductDesigner\Storefront\Controller\ProductDesignerController“ has a dependency on a non-existent service „ProductDesigner\Storefront\Custom\MotiveMenu“.
Dies zeigt mir, dass meine Vorgehensweise doch nicht richtig war. Wie kann ich denn nun eigenen PHP-Code in mein Shopware Plugin hinzufügen und die Rückgabewerte der renderStorefront-Methode übergeben?