Förutsättningar
Innan du börjar den här självstudien, ska du först slutföra följande uppgifter:
- Skapa ett nytt Laravel-projekt
- Ställ in databasanslutningen
- Kör migrera kommandot skapa en användartabell
- Ställ in konfigurationen för att skicka e-post (SMTP används här för att skicka e-post.)
Implementera standardautentisering
Implementera först Laravels standardanvändarautentiseringssystem för att slutföra schemaläggningsuppgiften som visas i denna handledning. Kör följande kommandon från terminalen för att implementera standard Laravel-autentisering med Vue.
$ kompositör kräver laravel / ui$ php artisan ui vue -auth
Kör följande kommando för att kompilera den nya byggnadsställningen för att få det uppdaterade innehållet.
$ npm install && npm run devKör följande kommando för att rensa ruttcachen.
$ php hantverksväg: tydligKör följande kommando för att starta Laravel-utvecklingsservern och kontrollera om standardanvändarautentiseringssystemet fungerar.
$ php hantverkare serverar
Öppna valfri webbläsare och kör följande URL i webbläsaren. Om den logga in och Registrera länken visas och fungerar korrekt, sedan har implementeringen av standardautentiseringen slutförts ordentligt.
http: // localhost: 8000
Skapa en mailbar klass och ett hantverkarkommando
Många nya användare kommer att skapa konton dagligen och kommer att utföra många uppgifter relaterade till registrerade användare när projektet är online. Ibland måste applikationen veta hur många användare som har skapat konton varje dag. Om denna information krävs regelbundet är det bättre att utföra en viss fråga efter ett regelbundet intervall. Ett Laravel-kommando används här för att få information om de för närvarande registrerade användarna och en e-postklass används för att skicka informationen via e-post till administratören eller en angiven person.
Kör följande kommando för att skapa den mailbara klassen för att skicka e-postmeddelandet. Det skapar en fil med namnet SendUsersList.php på platsen app / Mail.
$ php artisan make: mail SendUsersListÖppna filen och ändra innehållet, som i följande kod.
namnrymd App \ Mail;använd Illuminate \ Bus \ Queueable;
använd Illuminate \ Contracts \ Queue \ ShouldQueue;
använd Illuminate \ Mail \ Mailable;
använd Illuminate \ Queue \ SerializesModels;
klass SendUsersList utökar Mailable
använd Queueable, SerializesModels;
/ * Deklarera en arrayvariabel * /
public $ userList = array ();
/ **
* Skapa en ny meddelandeinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ($ userList)
/ * Initiera matrisvariabeln med variabeln som passeras av
objekt skapande av klassen. * /
$ this-> userList = $ userList;
/ **
* Skapa meddelandet.
*
* @ returnera $ detta
* /
public function build ()
/ * Spela upp visningsfilen med värdena för arrayvariabeln * /
returnera $ this-> view ('registeredList') -> med ('userList', $ this-> userList);
Kör följande kommando för att skapa det anpassade Laravel-kommandot som heter RegisterUsersList, som kommer att utföra frågan för att få listan med information om registrerade användare varje dag. Kommandot skapar en fil med namnet RegisterUsersList.php på platsen app / kommandon.
$ php artisan make: kommando RegisterUsersList - command = registrerad: användareÖppna filen och ändra innehållet med följande kod för att skicka listan över för närvarande registrerade användare av det aktuella systemet till en viss e-postadress.
namnrymd App \ Console \ Kommandon;använd Illuminate \ Console \ Command;
/ * Importera nödvändiga paket * /
använd Mail;
använd App \ Mail \ SendUsersList;
använd DB;
använd kol \ kol;
använd App \ Console \ Commands \ DateTime;
class RegisterUsersList utökar kommandot
/ **
* Namnet och signaturen för konsolkommandot.
*
* @var sträng
* /
/ * Lägg till signaturvärde * /
skyddad $ signatur = 'registrerad: användare';
/ **
* Beskrivning av konsolkommandot.
*
* @var sträng
* /
skyddad $ beskrivning = 'Lista över registrerade användare';
/ **
* Skapa en ny kommandoinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ()
förälder :: __ konstruera ();
/ **
* Utför konsolkommandot.
*
* @return int
* /
offentligt funktionshandtag ()
/ * Läs aktuellt systemdatum * /
$ idag = Kol :: nu () -> toDateString ();
/ * Få en lista över användarinformation som är registrerade
i nuvarande systemdatum * /
$ current_registered_users =
DB :: tabell ('användare') -> whereDate ('created_at', $ idag) -> get () -> toArray ();
/ * Skapa objektet för den mailbara klassen med arrayvariabeln
som innehåller listan över registrerade användare * /
$ email = ny SendUsersList ($ current_registered_users);
/ * Skicka e-post med e-postklassen * /
Mail :: till ('mottagarens e-postadress') -> skicka ($ email);
Ställ in schemat för att utföra kommandot
Öppna Kärna.php fil från platsen app / konsol och ändra innehållet med följande kod. Du kan ställa in olika typer av schemaläggningsfrekvensalternativ. Du kan hämta listan från den här länken. Här används timschemat.
namnrymd App \ Console;använd Illuminate \ Console \ Scheduling \ Schema;
använd Illuminate \ Foundation \ Console \ Kernel som ConsoleKernel;
klass Kernel utökar ConsoleKernel
/ **
* Artisan-kommandona som tillhandahålls av din ansökan.
*
* @var array
* /
/ * Intialisera variabeln $ kommandon * /
skyddade $ kommandon = [
'App \ Console \ Commands \ RegisterUsersList',
];
/ **
* Definiera programmets kommandoschema.
*
* @param \ Illuminate \ Console \ Scheduling \ Schema $ schema
* @return ogiltig
* /
skyddat funktionsschema (Schema $ schema)
/ * Ställ in schemat varje timme * /
$ schema-> kommando ('registrerad: användare') -> timme ();
/ **
* Registrera kommandona för applikationen.
*
* @return ogiltig
* /
skyddade funktionskommandon ()
$ this-> load (__ DIR__.'/ Kommandon');
kräver base_path ('rutter / konsol.php ');
Skapa vy
Skapa registrerad lista.blad.php visa fil med följande kod.
@if (antal ($ userList)> 0)
Listan över användare som är registrerade idag ges nedan:
@foreach ($ userList som $ user)
$ user-> name
@endforeach
@annan
Ingen användare är registrerad idag än.
@endif
Kör kommandot:
Kör följande kommandon för att rensa cacheminnet.
$ php hantverkscache: rensa$ php artisan config: cache
Kör följande hantverkarkommando från terminalen för att utföra det tidigare skapade anpassade kommandot och kontrollera utdata.
$ php hantverkare registrerad: användareKontrollera mottagarens e-postadress för att ta reda på resultatet. Följande utdata visas om ingen användare skapas.
Skapa ett nytt användarkonto och kontrollera e-postmeddelandet igen.
Slutsats
Laravel Scheduler gör upprepade uppgifter lättare att utföra för applikationen. Efter att ha läst denna handledning bör läsarna nu ha en klar förståelse för begreppen att skapa anpassade kommandon och implementera automatiserade uppgifter med Laravel Scheduler.