Pré-requisitos
Antes de iniciar este tutorial, primeiro, conclua as seguintes tarefas:
- Crie um novo projeto Laravel
- Configure a conexão do banco de dados
- Execute o comando migrate para criar uma tabela de usuário
- Defina a configuração para enviar e-mails (o SMTP é usado aqui para enviar e-mails.)
Implementar autenticação padrão
Primeiro, implemente o sistema de autenticação de usuário padrão do Laravel para completar a tarefa de agendamento mostrada neste tutorial. Execute os seguintes comandos do terminal para implementar a autenticação padrão do Laravel usando o Vue.
$ composer requer laravel / ui$ php artisan ui vue -auth
Execute o seguinte comando para compilar a nova estrutura para obter o conteúdo atualizado.
$ npm install && npm run devExecute o seguinte comando para limpar o cache da rota.
rota $ php artisan: clearExecute o seguinte comando para iniciar o servidor de desenvolvimento Laravel e verifique se o sistema de autenticação de usuário padrão está funcionando.
$ php artisan serve
Abra qualquer navegador e execute o seguinte URL no navegador. Se o Conecte-se e registro link aparece e funciona corretamente, então a implementação da autenticação padrão foi concluída corretamente.
http: // localhost: 8000
Crie uma classe disponível e um comando artesanal
Muitos novos usuários criarão contas diariamente e realizarão muitas tarefas relacionadas aos usuários registrados quando o projeto estiver online. Às vezes, o aplicativo precisa saber quantos usuários criaram contas a cada dia. Se essas informações forem necessárias regularmente, é melhor executar uma consulta específica após um intervalo regular. Um comando do Laravel é usado aqui para obter as informações dos usuários atualmente registrados e uma classe de correspondência é usada para enviar essas informações por e-mail para o administrador ou uma pessoa específica.
Execute o seguinte comando para criar a classe mailable para enviar o e-mail. Isso criará um arquivo chamado SendUsersList.php na localização app / Mail.
$ php artisan make: mail SendUsersListAbra o arquivo e modifique o conteúdo, como no código a seguir.
namespace App \ Mail;use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Mail \ Mailable;
use Illuminate \ Queue \ SerializesModels;
classe SendUsersList estende Mailable
use Queueable, SerializesModels;
/ * Declare uma variável de array * /
public $ userList = array ();
/ **
* Crie uma nova instância de mensagem.
*
* @return void
* /
função pública __construct ($ userList)
/ * Inicializa a variável do array pela variável passada pelo
criação de objeto da classe. * /
$ this-> userList = $ userList;
/ **
* Construa a mensagem.
*
* @return $ this
* /
construção de função pública ()
/ * Exibir o arquivo de visualização com os valores da variável de array * /
return $ this-> view ('RegisteredList') -> with ('userList', $ this-> userList);
Execute o seguinte comando para criar o comando personalizado do Laravel chamado RegisterUsersList, que irá executar a consulta para obter a lista de informações dos usuários cadastrados em cada dia. O comando irá criar um arquivo chamado RegisterUsersList.php na localização app / Comandos.
$ php artisan make: comando RegisterUsersList --command = registrado: usuáriosAbra o arquivo e modifique o conteúdo com o seguinte código para enviar a lista de usuários atualmente registrados do sistema atual para um endereço de e-mail específico.
namespace App \ Console \ Commands;use Illuminate \ Console \ Command;
/ * Importar pacotes necessários * /
use Mail;
use App \ Mail \ SendUsersList;
use DB;
use Carbon \ Carbon;
use App \ Console \ Commands \ DateTime;
class RegisterUsersList extends Command
/ **
* O nome e a assinatura do comando do console.
*
* @var string
* /
/ * Adicionar valor de assinatura * /
protegido $ assinatura = 'registrado: usuários';
/ **
* A descrição do comando do console.
*
* @var string
* /
protegido $ description = 'Lista de usuários registrados';
/ **
* Crie uma nova instância de comando.
*
* @return void
* /
função pública __construct ()
parent :: __ construct ();
/ **
* Execute o comando do console.
*
* @return int
* /
identificador de função pública ()
/ * Leia a data atual do sistema * /
$ today = Carbon :: now () -> toDateString ();
/ * Obter a lista de informações dos usuários que estão registrados
na data atual do sistema * /
$ current_registered_users =
DB :: table ('users') -> whereDate ('created_at', $ today) -> get () -> toArray ();
/ * Cria o objeto da classe mailable com a variável array
que contém a lista de usuários registrados atualmente * /
$ email = novo SendUsersList ($ current_registered_users);
/ * Enviar e-mail usando a classe Mail * /
Mail :: to ('endereço de email do destinatário') -> send ($ email);
Configure a programação para executar o comando
Abra o Núcleo.php arquivo do local app / console e modificar o conteúdo com o seguinte código. Você pode definir diferentes tipos de opções de frequência de programação. Você pode obter a lista neste link. Aqui, a programação horária é usada.
namespace App \ Console;use Illuminate \ Console \ Scheduling \ Schedule;
use Illuminate \ Foundation \ Console \ Kernel como ConsoleKernel;
classe Kernel estende ConsoleKernel
/ **
* Os comandos Artisan fornecidos pelo seu aplicativo.
*
* @var array
* /
/ * Inicialize a variável $ comandos * /
protegidos $ comandos = [
'App \ Console \ Commands \ RegisterUsersList',
];
/ **
* Defina a programação de comando do aplicativo.
*
* @param \ Illuminate \ Console \ Scheduling \ Schedule $ schedule
* @return void
* /
programação de função protegida (programação $ programação)
/ * Definir a programação de hora em hora * /
$ cronograma-> comando ('registrado: usuários') -> horário ();
/ **
* Registre os comandos para o aplicativo.
*
* @return void
* /
comandos de função protegida ()
$ this-> carregar (__ DIR__.'/ Comandos');
requerem base_path ('routes / console.php ');
Criar vista
Crie o RegisteredList.lâmina.php ver o arquivo com o seguinte código.
@if (contagem ($ userList)> 0)
A lista de usuários cadastrados hoje é fornecida a seguir:
@foreach ($ userList as $ user)
$ usuário-> nome
@endforeach
@senão
Nenhum usuário está registrado hoje ainda.
@fim se
Execute o comando:
Execute os seguintes comandos para limpar o cache.
$ php artisan cache: clear$ php artisan config: cache
Execute o seguinte comando artesanal no terminal para executar o comando personalizado criado anteriormente e verifique a saída.
$ php artisan registrado: usuáriosVerifique o endereço de e-mail do destinatário para descobrir o resultado. A seguinte saída aparecerá se nenhum usuário for criado.
Crie uma nova conta de usuário e verifique o e-mail novamente.
Conclusão
O Laravel Scheduler torna as tarefas repetitivas mais fáceis de executar para o aplicativo. Depois de ler este tutorial, os leitores agora devem ter uma compreensão clara dos conceitos de criação de comandos personalizados e implementação de tarefas automatizadas usando o Laravel Scheduler.