Prerequisiti
Prima di iniziare questo tutorial, completare le seguenti attività:
- Crea un nuovo progetto Laravel
- Configurare la connessione al database
- Esegui il comando migrate crea una tabella utente
- Imposta la configurazione per l'invio di e-mail (qui viene utilizzato SMTP per l'invio di e-mail.)
Implementa l'autenticazione predefinita
Innanzitutto, implementa il sistema di autenticazione utente predefinito di Laravel per completare l'attività di pianificazione mostrata in questo tutorial. Esegui i seguenti comandi dal terminale per implementare l'autenticazione Laravel predefinita utilizzando Vue.
$ il compositore richiede laravel/ui$ php craft ui vue -auth
Esegui il seguente comando per compilare il nuovo scaffolding per ottenere il contenuto aggiornato.
$ npm installa && npm esegui devEsegui il seguente comando per cancellare la cache del percorso.
$ php percorso artigianale: chiaroEsegui il seguente comando per avviare il server di sviluppo Laravel e controlla se il sistema di autenticazione utente predefinito funziona.
$ php servizio artigianale
Apri qualsiasi browser ed esegui il seguente URL nel browser. Se la Accedere e Registrati il collegamento viene visualizzato e funziona correttamente, quindi l'implementazione dell'autenticazione predefinita è stata completata correttamente.
http://localhost:8000
Crea una classe inviabile e un comando artigiano
Molti nuovi utenti creeranno account ogni giorno ed eseguiranno molte attività relative agli utenti registrati quando il progetto è online. A volte, l'applicazione deve sapere quanti utenti hanno creato account ogni giorno. Se queste informazioni sono richieste regolarmente, allora è meglio eseguire una particolare query dopo un intervallo regolare. Un comando Laravel viene utilizzato qui per ottenere le informazioni degli utenti attualmente registrati e viene utilizzata una classe inviabile per inviare tali informazioni via e-mail all'amministratore oa una persona specifica.
Esegui il seguente comando per creare la classe mailable per l'invio dell'e-mail. Creerà un file chiamato Invia elenco utenti.php nella posizione app/posta.
$ php artigiano make:mail SendUsersListApri il file e modifica il contenuto, come nel codice seguente.
spazio dei nomi App\Mail;usa Illumina\Bus\Queueable;
usa Illumina\Contracts\Queue\ShouldQueue;
usa Illumina\Mail\Mailable;
usa Illumina\Queue\SerializesModels;
class SendUsersList estende Mailable
usa Queueable, SerializesModels;
/* Dichiara una variabile array */
public $userList= array();
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
funzione pubblica __construct($userList)
/* Inizializza la variabile dell'array dalla variabile passata dal
creazione oggetto della classe. */
$this->userList = $userList;
/**
* Costruisci il messaggio.
*
* @return $this
*/
funzione pubblica build()
/* Visualizza il file di visualizzazione con i valori della variabile array */
return $this->view('registeredList')->with('userList',$this->userList);
Esegui il seguente comando per creare il comando Laravel personalizzato denominato RegistratiLista Utenti, che eseguirà la query per ottenere l'elenco delle informazioni degli utenti registrati ogni giorno. Il comando creerà un file chiamato RegistratiLista Utenti.php nella posizione app/comandi.
$ php craft make:comando RegisterUsersList --command=registered:usersApri il file e modifica il contenuto con il seguente codice per inviare l'elenco degli utenti attualmente registrati del sistema attuale a un determinato indirizzo email.
spazio dei nomi App\Console\Comandi;usa Illumina\Console\Comando;
/* Importa i pacchetti necessari */
usa la posta;
usa App\Mail\SendUsersList;
utilizzare DB;
usa Carbon\Carbon;
usa App\Console\Commands\DateTime;
class RegisterUsersList estende Command
/**
* Il nome e la firma del comando della console.
*
* @var stringa
*/
/* Aggiungi il valore della firma */
protected $signature = 'registrato:utenti';
/**
* La descrizione del comando della console.
*
* @var stringa
*/
protected $description = 'Elenco degli utenti registrati';
/**
* Crea una nuova istanza di comando.
*
* @return void
*/
funzione pubblica __construct()
genitore::__construct();
/**
* Esegui il comando della console.
*
* @return int
*/
handle di funzione pubblica()
/* Legge la data di sistema corrente */
$today =Carbon::now()->toDateString();
/* Ottieni l'elenco delle informazioni sugli utenti che sono registrati
nella data di sistema corrente */
$current_registered_users =
DB::table('users')->whereDate('created_at', $today)->get()->toArray();
/* Crea l'oggetto della classe mailable con la variabile array
che contiene l'elenco degli utenti attualmente registrati */
$email = new SendUsersList($current_registered_users);
/* Invia email utilizzando la classe Mail */
Mail::to('indirizzo email del destinatario')->send($email);
Imposta la pianificazione per eseguire il comando
Apri il kernel.php file dalla posizione app/console e modifica il contenuto con il seguente codice. È possibile impostare diversi tipi di opzioni di frequenza di pianificazione. Puoi ottenere la lista da questo link. Qui viene utilizzato il programma orario.
spazio dei nomi App\Console;usa Illumina\Console\Scheduling\Schedule;
usa Illuminate\Foundation\Console\Kernel come ConsoleKernel;
class Kernel estende ConsoleKernel
/**
* I comandi Artisan forniti dalla tua applicazione.
*
* @var array
*/
/* Inizializza la variabile $comandi */
$comandi protetti = [
'App\Console\Commands\RegisterUsersList',
];
/**
* Definire la pianificazione dei comandi dell'applicazione.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
pianificazione della funzione protetta (Schedule $schedule)
/* Imposta la pianificazione oraria */
$schedule->command('registered:users')->hourly();
/**
* Registra i comandi per l'applicazione.
*
* @return void
*/
comandi funzione protetta()
$this->load(__DIR__.'/Comandi');
require base_path('rotte/console.php');
Crea vista
Crea il lista registrata.lama.php visualizza il file con il seguente codice.
@if (count($userList) > 0)
Di seguito l'elenco degli utenti registrati oggi:
@foreach($userList as $user)
$utente->nome
@endforeach
@altro
Nessun utente è ancora registrato oggi.
@finisci se
Esegui il comando:
Esegui i seguenti comandi per cancellare la cache.
$ php craft cache:clear$ php craft config:cache
Esegui il seguente comando artigiano dal terminale per eseguire il comando personalizzato creato in precedenza e controlla l'output.
$ php artigiano registrato: utentiControlla l'indirizzo email del destinatario per scoprire l'output. Il seguente output apparirà se non viene creato alcun utente.
Crea un nuovo account utente e controlla di nuovo l'e-mail.
Conclusione
Il Laravel Scheduler rende le attività ripetitive più facili da eseguire per l'applicazione. Dopo aver letto questo tutorial, i lettori dovrebbero ora avere una chiara comprensione dei concetti di creazione di comandi personalizzati e implementazione di attività automatizzate utilizzando Laravel Scheduler.