Guten Abend Liebe Shopware-Gemeinde,
ich sitze nun seit einigen Tagen an meinem ersten Plugin und stehe vor dem ersten Problem, auf dessen Lösung ich bisher noch nicht selbst gekommen bin.
Folgende Anforderung:
Ich benötige in der Plugin-Konfiguration (sowohl auf der jeweiligen Plugin-Manager-Seite, als auch in den Grundeinstellungen) die aktuell aktivierten Benutzerrollen. Der erste Aufruf funktioniert tadellos und es werden alle aktiven Benutzerrollen dargestellt. Wird danach allerdings eine Benutzerrolle deaktiviert, bleibt diese weiterhin in der Plugin-Konfiguration stehen. Folgenden Code verwende ich in der besagten Funktionalität:
[...]
$repository = Shopware()->Container()->get('models')->getRepository(Role::class);
$roles = $repository->findAll();
$selectElementValues = [];
foreach($roles as $role) {
if($role->getEnabled()) {
$selectElementValues[] = [$role->getId(), $role->getName()];
}
}
$form = $this->Form();
$form->setElement('select', 'service-excepting-userroles', [
'label' => 'Benutzerrollen',
'multiSelect' => true,
'store' => $selectElementValues
]);
[...]
Dieser Code wird jeweils in der install und createConfiguration Methode aufgerufen. Meine Überlegungen waren Folgende:
* Wird möglicherweise das Ergebnis aus getRepository() gecached? Der Aufruf von $this->disableControllerCache() in der jeweils ersten Zeile brachte jedenfalls nichts
* Sind die verwendeten Methoden überhaupt die Richtigen?
* Werden die Werte in der Datenbank gespeichert? Auch dort habe ich nichts gefunden.
Wäre cool, wenn jemand einen Lösungsansatz hätte.
Viele Grüße und ein schönes Wochenende
Michael