WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как использовать события и слушатели Laravel в вашем приложении

183

В основе Laravel есть несколько интересных функций. Некоторые из них – это широковещание, хранилище файлов, уведомления, события и т.д. Каждая из этих встроенных функций помогает разработчикам упростить общие и сложные задачи.

В этой статье мы обсуждаем события Laravel, которые позволяют нам зарегистрировать слушателя для определенных событий, которые происходят в приложении. Другими словами, я могу сказать, что пользователь зарегистрирован, заказ размещен, продукт добавлен – все это события. И если вам нужно запустить какое-то действие после этих событий, вы можете зарегистрировать слушателей. Laravel автоматически вызывает слушателей, зарегистрированных для определенных событий.

В нашей статье я реализую событие для регистрации пользователя. После того, как пользователь зарегистрировался в приложении, система должна отправить ему приветственное письмо. Здесь регистрация пользователя – это событие, а отправка приветственного письма – это слушатель.

Сказав это, давайте посмотрим, как использовать события и прослушиватели в вашем приложении Laravel.

Регистрация событий и слушателей в Laravel

Laravel предоставляет EventServiceProviderфайл, в котором вам нужно зарегистрировать свои события и слушателей. В нашем случае нам нужно добавить событие и прослушиватель для регистрации пользователя. Итак, откройте файл EventServiceProvider.phpи добавьте UserRegisteredв него событие.

приложение / Провайдеры / EventServiceProvider.php

...
...
class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'AppEventsUserRegistered' => [
            'AppListenersSendWelcomeEmail',
        ],
    ];

Пользователь может добавить в этот массив любое количество событий в зависимости от требований. Затем сгенерируйте события Laravel, выполнив команду:

php artisan event:generate

Эта команда создает каталоги «События» и «Слушатели» в папке «app». Внутри каталога app / Events вы найдете файл UserRegistered.php. Точно так же SendWelcomeEmail.phpфайл находится в каталоге app / Listeners.

Определение событий и слушателей

Теперь у вас есть шаблон для вашего зарегистрированного пользователем события. Наша цель – отправить пользователю приветственное письмо после регистрации. Чтобы отправить электронное письмо, нам нужен объект пользователя, который содержит информацию о пользователе. В UserRegisteredслучае, если я передал объект пользователя в его конструктор. Затем этот объект будет передан слушателю.

приложение / События / UserRegistered.php

<?php
 
namespace AppEvents;
 
....
use AppUser;
 
class UserRegistered
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
 
    public $user;
 
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;   
    }
}

Код, который отправляет электронное письмо пользователю, войдет в файл прослушивателя. Откройте слушатель SendWelcomeEmailи напишите код следующим образом.

приложение / Слушатели / SendWelcomeEmail.php

<?php
 
namespace AppListeners;
 
....
use Mail;
 
class SendWelcomeEmail
{
    ....
    ....
 
    /**
     * Handle the event.
     *
     * @param  UserRegistered  $event
     * @return void
     */
    public function handle(UserRegistered $event)
    {
        $data = array('name' => $event->user->name, 'email' => $event->user->email, 'body' => 'Welcome to our website. Hope you will enjoy our articles');
 
        Mail::send('emails.mail', $data, function($message) use ($data) {
            $message->to($data['email'])
                    ->subject('Welcome to our Website');
            $message->from('[email protected]');
        });
    }
}

В приведенном выше файле я написал код для отправки электронной почты в handleметоде класса слушателя. Это связано с тем, что handleметод получает вызов после возникновения события регистрации пользователя.

Я также использовал первый параметр как «emails.mail» в методе Mail. Это означает, что вы должны создать resources/views/emails/mail.blade.phpфайл.

mail.blade.php

Hi <strong>{{ $name }}</strong>,
 
<p>{{ $body }}</p>

Наконец вызовите событие

На этом этапе у вас все готово со своим событием и слушателем. Остается последний шаг – вызвать событие из соответствующего места. Допустим, вы используете UserController для регистрации пользователя. Таким образом UserController, вы можете позвонить на мероприятие следующим образом.

приложение / HTTP / Контроллеры / UserController.php

<?php
 
namespace AppHttpControllers;
 
....
use AppEventsUserRegistered;
use AppUser;
 
class UserController extends Controller
{
    .....
    .....
 
    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $user = User::create([
            'name' => $request->input('name'),
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password')),
        ]);
  
        // call our event here
        event(new UserRegistered($user));
  
        return $user;
    }
}

Теперь, когда пользователь зарегистрировался, приведенный выше код вызывает событие UserRegistered, которое в конечном итоге вызывает слушателя. Затем слушатель отправляет пользователю приветственное письмо.

Надеюсь, вы понимаете, как использовать события и слушателей в вашем приложении Laravel. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее