Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, führen Sie zunächst die folgenden Aufgaben aus:
- Erstellen Sie ein neues Laravel-Projekt
- Datenbankverbindung einrichten
- Führen Sie den Migrationsbefehl aus, um eine Benutzertabelle zu erstellen
- Richten Sie die Konfiguration für den E-Mail-Versand ein (SMTP wird hier zum Versenden von E-Mails verwendet.)
Implementieren der Standardauthentifizierung
Implementieren Sie zunächst das standardmäßige Benutzerauthentifizierungssystem von Laravel, um die in diesem Tutorial gezeigte Planungsaufgabe abzuschließen. Führen Sie die folgenden Befehle über das Terminal aus, um die standardmäßige Laravel-Authentifizierung mit Vue implement zu implementieren.
$ Komponist benötigt laravel/ui$ php Handwerker ui vue -auth
Führen Sie den folgenden Befehl aus, um das neue Gerüst zu kompilieren, um den aktualisierten Inhalt zu erhalten.
$ npm installieren && npm ausführen devFühren Sie den folgenden Befehl aus, um den Routencache zu löschen clear.
$ php Handwerkerroute: klarFühren Sie den folgenden Befehl aus, um den Laravel-Entwicklungsserver zu starten und zu überprüfen, ob das standardmäßige Benutzerauthentifizierungssystem funktioniert.
$ php Handwerker dienen
Öffnen Sie einen beliebigen Browser und führen Sie die folgende URL im Browser aus. Wenn die Anmeldung und registrieren Link angezeigt wird und ordnungsgemäß funktioniert, wurde die Implementierung der Standardauthentifizierung ordnungsgemäß abgeschlossen.
http://localhost:8000
Erstellen Sie eine versandfähige Klasse und einen Handwerkerbefehl
Viele neue Benutzer erstellen täglich Konten und führen viele Aufgaben im Zusammenhang mit registrierten Benutzern aus, wenn das Projekt online ist. Manchmal muss die Anwendung wissen, wie viele Benutzer täglich Konten erstellt haben. Wenn diese Informationen regelmäßig benötigt werden, ist es besser, eine bestimmte Abfrage in regelmäßigen Abständen auszuführen. Hier wird ein Laravel-Befehl verwendet, um die Informationen der derzeit registrierten Benutzer zu erhalten, und eine mailfähige Klasse wird verwendet, um diese Informationen per E-Mail an den Admin oder eine bestimmte Person zu senden.
Führen Sie den folgenden Befehl aus, um die mailable-Klasse zum Senden der E-Mail zu erstellen. Es wird eine Datei namens erstellt SendUsersList.php am Standort App/Mail.
$ php Handwerker make:mail SendUsersListÖffnen Sie die Datei und ändern Sie den Inhalt wie im folgenden Code.
Namespace App\Mail;Verwenden Sie Illuminate\Bus\Queueable;
Verwenden Sie Illuminate\Contracts\Queue\ShouldQueue;
verwenden Sie Illuminate\Mail\Mailable;
Verwenden Sie Illuminate\Queue\SerializesModels;
Klasse SendUsersList erweitert Mailable
Verwenden Sie Queueable, SerializesModels;
/* Eine Array-Variable deklarieren */
public $userList= array();
/**
* Erstellen Sie eine neue Nachrichteninstanz.
*
* @return ungültig
*/
öffentliche Funktion __construct($userList)
/* Initialisiere die Array-Variable durch die Variable, die von der übergeben wurde
Objekterstellung der Klasse. */
$this->userList = $userList;
/**
* Erstellen Sie die Nachricht.
*
* @return $this
*/
öffentliche Funktion build()
/* Anzeige der View-Datei mit den Werten der Array-Variablen */
return $this->view('registeredList')->with('userList',$this->userList);
Führen Sie den folgenden Befehl aus, um den benutzerdefinierten Laravel-Befehl namens . zu erstellen RegistrierenBenutzerliste, die die Abfrage ausführt, um die Liste der registrierten Benutzerinformationen an jedem Tag zu erhalten. Der Befehl erstellt eine Datei namens RegistrierenBenutzerliste.php am Standort App/Befehle.
$ php artisan make:command RegisterUsersList --command=registered:usersÖffnen Sie die Datei und ändern Sie den Inhalt mit dem folgenden Code, um die Liste der derzeit registrierten Benutzer des aktuellen Systems an eine bestimmte E-Mail-Adresse zu senden.
Namespace App\Console\Commands;Verwenden Sie Illuminate\Console\Command;
/* Notwendige Pakete importieren */
E-Mail verwenden;
verwenden Sie App\Mail\SendUsersList;
DB verwenden;
Kohlenstoff\Kohlenstoff verwenden;
verwenden Sie App\Console\Commands\DateTime;
Klasse RegisterUsersList erweitert Command
/**
* Der Name und die Signatur des Konsolenbefehls.
*
* @var-String
*/
/* Signaturwert hinzufügen */
protected $signature = 'registrierte:Benutzer';
/**
* Die Beschreibung des Konsolenbefehls.
*
* @var-String
*/
protected $description = 'Liste der registrierten Benutzer';
/**
* Erstellen Sie eine neue Befehlsinstanz.
*
* @return ungültig
*/
öffentliche Funktion __construct()
parent::__construct();
/**
* Führen Sie den Konsolenbefehl aus.
*
* @return int
*/
öffentliche Funktion handle()
/* Aktuelles Systemdatum lesen */
$heute =Carbon::now()->toDateString();
/* Liste der registrierten Benutzerinformationen abrufen
im aktuellen Systemdatum */
$current_registered_users =
DB::table('users')->whereDate('created_at', $today)->get()->toArray();
/* Erzeuge das Objekt der mailable-Klasse mit der Array-Variablen
die die aktuell registrierte Benutzerliste enthält */
$email = new SendUsersList($current_registered_users);
/* E-Mail mit Mail-Klasse senden */
Mail::to('E-Mail-Adresse des Empfängers')->send($email);
Einrichten des Zeitplans zum Ausführen des Befehls
Öffne das Kernel.php Datei vom Speicherort App/Konsole und ändern Sie den Inhalt mit dem folgenden Code. Sie können verschiedene Arten von Zeitplan-Häufigkeitsoptionen einstellen. Sie können die Liste unter diesem Link abrufen. Hier wird der Stundenplan verwendet.
Namespace-App\Konsole;verwenden Sie Illuminate\Console\Scheduling\Schedule;
Verwenden Sie Illuminate\Foundation\Console\Kernel als ConsoleKernel;
class Kernel erweitert ConsoleKernel
/**
* Die von Ihrer Anwendung bereitgestellten Artisan-Befehle.
*
* @var-Array
*/
/* Initialisiere die $commands-Variable */
geschützte $Befehle = [
'App\Console\Commands\RegisterUsersList',
];
/**
* Definieren Sie den Befehlszeitplan der Anwendung.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return ungültig
*/
Geschützter Funktionszeitplan (Zeitplan $zeitplan)
/* Stellen Sie den Zeitplan stündlich ein */
$schedule->command('registered:users')->hourly();
/**
* Registrieren Sie die Befehle für die Anwendung.
*
* @return ungültig
*/
geschützte Funktionsbefehle()
$this->load(__DIR__.'/Befehle');
erfordern base_path('routes/console.php');
Ansicht erstellen
Erstellen Sie die registrierteListe.Klinge.php Datei mit folgendem Code anzeigen.
@if (count($userList) > 0)
Die Liste der heute registrierten Benutzer ist unten aufgeführt:
@foreach($userList als $user)
$user->name
@endforeach
@sonst
Heute ist noch kein Benutzer registriert.
@endif
Führen Sie den Befehl aus:
Führen Sie die folgenden Befehle aus, um den Cache zu leeren.
$ php Handwerker-Cache: löschen$ php artisan config:cache
Führen Sie den folgenden handwerklichen Befehl über das Terminal aus, um den zuvor erstellten benutzerdefinierten Befehl auszuführen und die Ausgabe zu überprüfen.
$ php Handwerker registriert:BenutzerÜberprüfen Sie die E-Mail-Adresse des Empfängers, um die Ausgabe zu erfahren. Die folgende Ausgabe wird angezeigt, wenn kein Benutzer erstellt wurde.
Erstellen Sie ein neues Benutzerkonto und überprüfen Sie die E-Mail erneut.
Fazit
Der Laravel Scheduler erleichtert die Ausführung sich wiederholender Aufgaben für die Anwendung. Nach dem Lesen dieses Tutorials sollten die Leser nun ein klares Verständnis der Konzepte zum Erstellen benutzerdefinierter Befehle und zur Implementierung automatisierter Aufgaben mit Laravel Scheduler haben.