Weiß jemand, warum der Dump nur funktioniert, wenn ich das erste Mal den Shop lade?
Ich meine, wenn ich auf das Logo klicke, geht er zur Homepage zurück , ohne den Dump zu sehen (aber eigentlich sollte ich den Dump ständig sehen und eigentlich sollte ich nicht zur Startseite gelangen, solange ich nicht eingeloggt bin ) ?
Jedes Mal, wenn ich diesen Befehl mache: bin/console cache:clear && bin/console theme:compile, funktioniert es beim ersten Mal
Wäre für jede Hilfe mega dankbar !
private $urlGenerator;
/**
* @var RequestStack
*/
private $requestStack;
public function __construct(UrlGeneratorInterface $urlGenerator, RequestStack $requestStack)
{
$this->urlGenerator = $urlGenerator;
$this->requestStack = $requestStack;
}
public static function getSubscribedEvents(): array
{
return [
GenericPageLoadedEvent::class => 'onPageLoaded'
];
}
public function onPageLoaded(PageLoadedEvent $event): void
{
dump($event);
$customer = $event->getSalesChannelContext()->getCustomer();
if ($customer == null) {
$this->redirectToLogin();
}
}
private function redirectToLogin(): void
{
$route = $this->requestStack->getCurrentRequest()->attributes->get('_route');
if ($route === 'frontend.home.page') {
$url = $this->urlGenerator->generate('frontend.account.login');
$response = new RedirectResponse($url);
$response->send();
}
}
An sich jetzt erst mal schwer nachzuvollziehen. Ich kann da nur ein paar kleine Hinweise geben:
Hast Du eine Datei .env.local angelegt und dort die Variable APP_ENV=dev eingetragen?
dump() kenne ich persönlich nicht als PHP-Funktion, nur var_dump().
Wenn ich mich nicht irre, kann es sein, dass das PageLoaded-Event nicht getriggert wird, wenn ein anderer Seitentyp geladen wird. Außerdem ist es glaube ich ein relativ spätes Event, bei dem das Seiten-Template schon durch Twig gerendert wurde - danach erst die Weiterleitung zu machen ist ein wenig verschwendete Rechenleistung. Die aufgerufenen Events kann man über die Symfony Debug-Bar einsehen, wirf dort sonst mal einen Blick rein.
Okay hab ein Problem , wenn ich das Plugin aktiviere ( auf der Staging) kommt ein The server returned a „500 Internal Server Error“ Fehler
Das Plugin ist in der Db aktiv und die Storefront macht was es soll, aber ich komm dann nicht mehr in die Admin rein @littleAmused .
Weiß du vlt woran das liegen könnte ?
class LoginRedirectSubscriber implements EventSubscriberInterface
{
private $urlGenerator;
public function __construct(UrlGeneratorInterface $urlGenerator)
{
$this->urlGenerator = $urlGenerator;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'onKernelResponse'
];
}
public function onKernelResponse(ResponseEvent $event): void
{
$request = $event->getRequest();
$customer = $request->attributes->get('sw-sales-channel-context')->getCustomer();
if (!$customer && $request->attributes->get('_route') === 'frontend.home.page') {
$url = $this->urlGenerator->generate('frontend.account.login');
$event->setResponse(new RedirectResponse($url));
}
}
}
Versuch am besten, per SSH auf den Server zuzugreifen und das Plugin mittels Konsolen-Befehl wieder zu deinstallieren. Eventuell wird dir dort schon der Fehler angezeigt.
Alternativ in der Staging Umgebung mal den Dev-Mode aktivieren - ist zwar die unsichere Variante, aber für den Hotfix kommst Du da glaub ich gerade nicht drum herum. Der Dev-Mode ist wichtig, damit Symfony Dir den richtigen Fehler anzeigt.
Hast du vlt Discord, dann könnten wir uns vlt dort austauschen ? @littleAmused
Weil selbst wenn ich die Methode nru so defineire kommt der selbe fehler:
public function onKernelResponse(ResponseEvent $event): void
{
$request = $event->getRequest();
$customer = $request->attributes->get('sw-sales-channel-context')->getCustomer();
dump($request);
}
Ich klink mich mal mit ein, weil mich das Thema interessiert.
Am besten machst du das so wies der Kollege schon gesagt hat - hol dir darüber die „richtige“ Fehlermeldung. Dann macht auch ein Call mehr Sinn weil dir gleich gezielt geholfen werden kann.
Im Dev Modus bzw. per SSH dürftest du eine viel aussagekräftigere Fehlermeldung bekommen wie z.B. dass das Event gar nicht vorhanden ist oder oder oder
[Tue Aug 15 13:04:45.424376 2023] [core:error] [pid 16318:tid 140362424715008] [client 95.223.106.105:23312] End of script output before headers: php8.1, referer: Shopware Administration (c) shopware AG
Sehe gerade das ich noch diese Fehler dazu bekomme, sobald ich zB auf Produkte klicken möchte ( kommt aber auch ohne mein Plugin):
Normal spricht das für einen Timeout nach einem langen Query bzw. ein Query der nicht beendet werden kann. Oder auch Rechte Probleme - ist in die Richtung alles richtig konfiguriert?
Wie ist das allgemeine System aufgestellt, erfüllst du alle Bedingungen für 6.5.1.1?
Du kannst dich ja mal melden und mir das Plugin mal zukommen lassen, dann schau ichs mir in einer Dev Umgebung an und find den Fehler für dich. Ich geh mal stark davon aus das einer der 3 Punkte oben nicht passt.