Hallo zusammen,
wir möchten gern das Model „Option“ von „SwagCustomProducts“ um ein paar Felder erweitern, um diese im Backend zu pflegen und die Werte dann im Frontend zu nutzen. Die Änderungen funktionieren auch wunderbar, wenn man es direkt im Original-Plugin einbaut - aber das sachgemäße Auslagern in ein eigenes Plugin bereitet Probleme.
In meinem Plugin habe ich nun:
-
das normale Plugin Setup
-
eine install Routine, die mittels SchemaTool und updateSchema die Datenbanktabelle erweitert (funktioniert)
-
templates und backend Javascript, um die Felder im Backend anzuzeigen (klappt auch)
-
ein eigenes Model „Option“ welches das Original extended (ein Beispielfeld mit getter und setter)
namespace ExtendCustomProducts\Models;
use Doctrine\ORM\Mapping as ORM;
/**
-
@ORM\Table(name=„s_plugin_custom_products_option“, indexes={@ORM\Index(name=„idx_spcpo_template_id“, columns={„template_id“})})
-
@ORM\Entity()
/
class Option extends \SwagCustomProducts\Models\Option
{
/*- @var string
-
@ORM\Column(name=„internal_key“, type=„string“, nullable=false)
*/
protected $internalKey;
/**
-
@return string
*/
public function getInternalKey()
{
return $this->internalKey;
}
/**
-
@param string $internalKey
*/
public function setInternalKey($internalKey)
{
$this->internalKey = $internalKey;
}
}
-
Nun die entscheidenden Fragen:
- Wie kann ich Shopware sagen, dass es immer mein „Option“ Model verwenden soll, wenn nach dem CustomProducts Model gefragt wird?
- Muss man den Shopware Container für die Dependency Injection anpassen? Wenn ja wie?
- Kann oder sollte man Events nutzen, um dem Plugin das neue Model zu geben? Wenn ja wie?
- Gibt es andere empfohlene Lösungen für diese eigentlich recht gängige Problemstellung?
In anderen Forenbeiträgen reichten die Antworten von „geht überhaupt nicht“ bis zu „sollte eigentlich automatisch funktionieren“… eine sauber dokumentierte Lösung konnte ich leider nicht finden.
Für hilfreiche Hinweise bin ich sehr dankbar.
Viele Grüße
Ralf