Ich versuche mich gerade an einem Plugin, dass mir ein durchsuchbares Produkt Repository für meinen aktuellen Saleschannel bereitstellt. Darüber will ich an die Produkt-Objekte herankommen.
Ich bekomme jetzt aber, egal wie ich meine Klasse nenne, einen Error.
Ich hoffe mir kann jemand sagen, was mein Fehler ist, ich bin am Verzweifeln.
Compile Error: Cannot declare class Roth\ProductRepo\Twig\RothProductRepo, because the name is already in use
Mein Plugin ist wie folgt aufgebaut
RothProductRepo
-composer.json
-src
--Resources
---config
----services.xml
--Twig
---RothProductRepository.php
--RothProductRepo.php
composer.json
{
"name": "roth/product-repo",
"description": "stellt ein durchsuchbares Produkt Repository bereit",
"version": "1.0.0",
"type": "shopware-platform-plugin",
"license": "MIT",
"authors": [
{
"name": "Konstantin Roth"
}
],
"autoload": {
"psr-4": {
"Roth\\ProductRepo\\": "src/"
}
},
"extra": {
"shopware-plugin-class": "Roth\\ProductRepo\\RothProductRepository",
"label": {
"de-DE": "durchsuchbares Produkt Repository",
"en-GB": "searchable Product Repository"
}
}
}
RothProductRepo.php
<?php declare(strict_types=1);
namespace Roth\ProductRepo;
use Shopware\Core\Framework\Plugin;
class RothProductRepo extends Plugin
{
}
RothProductRepository.php
<?php declare(strict_types=1);
namespace Roth\ProductRepo\Twig;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\System\SalesChannel\Entity\SalesChannelRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
class RothProductRepo
{
/**
* @var SalesChannelRepositoryInterface
*/
private $salesChannelProductRepository;
/*
* Construct
*/
public function __construct(SalesChannelRepositoryInterface $salesChannelProductRepository)
{
$this->salesChannelProductRepository = $salesChannelProductRepository;
}
public function searchProductByID($productID, $context)
{
return
$this->salesChannelProductRepository->search(new Criteria([$productID]), $context)->first();
}
}
services.xml
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- SERVICES-->
<service id="Roth\ProductRepo\Twig\RothProductRepository" public="true">
<tag name="twig.extension"/> <!--Required-->
<argument type="service" id="sales_channel.product.repository"/>
</service>
</services>
</container>