2017-05-29 3 views
0

Ich würde gerne wissen, ob Laravel Handwerker Befehle im Front-End oder nicht möglich ist? und wenn ja wie?Laravel Kommandozeilen im Front-End

Was ich meine ist:

zum Beispiel Website in den Wartungsmodus zu bringen, verwenden wir php artisan down so möchte ich wissen, ist es trotzdem, wenn ich als Option machen dies für meine Admins ihre Website in den Wartungsmodus zu bringen, indem zum Beispiel einige Checkbox?

Auch dies kann für die Aktualisierung .env Dateicodes auch verwendet werden.

Irgendeine Idee auf dem?

+0

Ja, Sie können das tun, von Front-End. Sie müssen Ihren'Artisan :: Call ('down') aufrufen; ' –

+0

@NikhilRadadiya haben Sie eine Probe davon? Wie du in diesem Fall siehst, bin ich außer Kenntnis! :) – djhru

+0

überprüfen Sie diese https://StackOverflow.com/Questions/21047573/Maintenance-Mode-without-using-artisan –

Antwort

0

Sie können Artisan rufen von Ihrem Router oder in Ihrem Controller wie so:

Artisan::call('down'); 

Passen Sie diesen Fehler bekommen könnte:

Use of undefined constant STDIN 

Welche Sie, indem Sie diesen Schnipsel vor Ihrer Artisan beheben rufen Sie an:

define('STDIN',fopen("php://stdin","r")); 
+0

können Sie mir eine vollständige Funktion Probe? Ich bekomme diese Einstellung für manuelle Befehle im Frontend nicht, und wie muss ich sie zum Beispiel in der Checkbox definieren? – djhru

+0

@robertnicjoo es ist nur ein Funktionsaufruf, den Sie überall in Ihrem Programm setzen können, rufen Sie wahrscheinlich eine Funktion, wenn Sie auf dieses Kontrollkästchen klicken, können Sie einfach den Handwerker Anruf dort setzen! – FMashiro

0

Ja, Sie können. Aber in Ihrem Fall ist es nicht lebensfähig. Sie können alle Befehle mit Artisan::call('command-name') von Ihrem Controller aufrufen. Daher können Sie eine Anfrage von Ihrem Frontend übergeben und diese in Ihrem Controller bearbeiten, um entsprechende Befehle auszuführen.

Aber in Ihrem Beispiel der Website in den Wartungsmodus mit down Befehl wird nicht korrekt sein. Sie können Artisan::call('down'); von Ihrem Controller als Administrator aufrufen. Aber sobald die Website in den Wartungsmodus wechselt, können selbst Administratoren nicht mehr darauf zugreifen und haben somit keine Chance, sie über Ihr Control Panel/Dashboard abzurufen. Die Standard-Middleware von Laravel setzt die Site für alle Benutzer ein, aber Sie können dies erreichen, wenn Sie die Middleware so anpassen, dass Administratoren auf die Site im Wartungsmodus zugreifen können.

Zum Ändern der .env-Datei ist es nur eine Datei, die wie jede andere Datei geändert werden kann. Beachten Sie jedoch, dass die Konfiguration abhängig von Ihrer Bereitstellung zwischengespeichert werden kann und dass Sie Artisan::call('config:clear'); zum Löschen oder ausführen müssen, um die Konfigurationen zwischenzuspeichern.

+0

Sie haben mir heute viel geholfen, Mann, ich schätze, dass, was Sie sagen, Sinn machen, aber ich benutze zur Zeit Middleware '$ this-> Middleware ('auth: admin');' sollte ich Codes in diese Datei einfügen oder erstellen Ein weiterer? wenn ein anderer kann ich 2 Middleware in einem Controller verwenden? – djhru

+1

Die Middleware, die den Wartungsmodus verwaltet, ist 'CheckForMaintenanceMode', eine globale Middleware, die auf jede einzelne Route in Ihrer Anwendung angewendet wird, ohne sie implizit hinzuzufügen. Du musst also diese Middleware modifizieren, um Admins zu erlauben. Auch um Ihre zweite Frage zu beantworten, können Sie eine beliebige Anzahl von Middlewares auf jedem Controller oder Routen verwenden. – Sandeesh

+0

Ich habe versucht, diese 'protected $ außer = [ // URIs, https: // laravel.com/docs/master/routing # csrf-exclusive-uris 'admin', 'admin/*', 'Statistiken' ]; 'in' CheckForMaintenanceMode', aber immer noch cick mich aus! :) Warum? – djhru

Verwandte Themen