Hallo,
ich habe ein Plugin geschrieben, über das ich Einträge in der Datenbank speichern kann und im Shop ausgebe. Jetzt wollte ich das ganze erweitern und eine SaleChannel-Zuordnung einbauen.
Ich habe sowohl die Entity, Definition Klasse und Template erweitert.
Enitiy.php
...
/**
* @var string
*/
protected $salesChannelId;
/**
* @var SalesChannelEntity|null
*/
protected $salesChannel;
...
/**
* @return string
*/
public function getSalesChannelId(): string
{
return $this->salesChannelId;
}
/**
* @param string $salesChannelId
*/
public function setSalesChannelId(string $salesChannelId): void
{
$this->salesChannelId = $salesChannelId;
}
/**
* @return SalesChannelEntity|null
*/
public function getSalesChannel(): ?SalesChannelEntity
{
return $this->salesChannel;
}
/**
* @param SalesChannelEntity|null $salesChannel
*/
public function setSalesChannel(?SalesChannelEntity $salesChannel): void
{
$this->salesChannel = $salesChannel;
}
Definition.php
/**
* return fiels collection
*
* @return FieldCollection
*/
protected function defineFields(): FieldCollection
{
return new FieldCollection([
(new IdField('id', 'id'))->addFlags(new PrimaryKey(), new Required()),
(new FkField('sales_channel_id', 'salesChannelId', SalesChannelDefinition::class))->addFlags(new Required()),
(new StringField('name', 'name'))->addFlags(new Required()),
new BoolField('active', 'active'),
...
(new ManyToOneAssociationField('salesChannelId', 'sales_channel_id', SalesChannelDefinition::class, 'id', false)) // Warum andere Parameterreihenfolge als bei OneToOne?
]);
}
Das Template, dass das Formular anzeigt habe ich auch entsprechend erweitert.
...
Der Saleschannel-Switcher wird auch angezeigt und ich kann im Dropdown einen auswählen und die anderen bereits vorhandenen Felder auch entsprechend befüllen. Wenn ich dann aber speichere, wird im POST Request überhaupt kein salesChannelId Eintrag übertragen. Also auch nichts leeren, dieser Parameter fehlt einfach komplett. Entsprechend gibts einen 500 Fehler, weil der SQL Insert nicht durchgeführt werden kann, da ich sales_channel_id Required gesetzt habe.
bin/build-administration.sh und bin/console cache:clear wurde ausgeführt.
Wie bekomme ich die salesChannelId zum POST-Request hinzugefügt?