In einigen meiner Controller habe ich gemeinsame Route Parameter, die für mehrere Methoden übergeben werden. Einige dieser Parameter benötigen eine zusätzliche Verarbeitung (String-Verarbeitung), bei der die gleichen Parameter übergeben und die gleichen Verarbeitungsmethoden innerhalb jeder Controller-Methode aufgerufen werden müssen, die diese Parameter verwendet. Anstatt Code zu duplizieren, habe ich eine Eigenschaft, die mein Controller enthält, und den Aufruf dieses Merkmals in der Konstruktormethode des Controllers.Laravel Controller-Konstruktor Problem
Das funktioniert gut, ich kann diese Parameter an die Klasseneigenschaften binden und sie können von allen meinen Methoden zugegriffen werden. Das Problem tritt auf, wenn artisan-Befehle ausgeführt werden, die Controller wie z. B. artisan route:list
instanziieren. Ich erhalte die folgende Fehlermeldung, wenn dieser Befehl ausgeführt wird:
Call to a member function getParameter() on null
Ich weiß, das ist so, weil ein Aufruf an Route::current()
wird null
zurückkehren, da es keine Strecke oder Request-Objekt ist, wenn Handwerker ausgeführt wird, aber ich finde mich mit Kommentar den Code in meinem Merkmal aus, nur um eine Liste meiner Routen zu bekommen. Ich bin mir sicher, dass es auch andere Probleme geben kann.
Meine Frage ist, wie kann ich angehen, um sauberer zu sein? Die einzige Lösung, an die ich derzeit denken kann, ist das Aufrufen meiner Parameter-Registrierungsmethode für jede Controller-Methode, aber das möchte ich nicht tun. Irgendwelche Ideen?
wäre es schön, wenn Sie ein Beispiel hinzufügen können. – imrealashu
Es ist eine ziemlich einfache Frage, ich brauche eine Möglichkeit, auf die Fassaden "Route" und "Request" innerhalb der Konstruktorfunktionen meiner Controller zuzugreifen, ohne mit "Handwerker" -Befehlen zu kollidieren. Ein Beispiel in diesem Fall ist nicht notwendig. – samrap
Sie können 'if (php_sapi_name()! = 'Cli') {// Verwenden Sie die Anfrage und Riute}'. –