...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як використовувати події та слухачі Laravel у своїй програмі

44

В основі Laravel – кілька цікавих функцій. Деякі з них – це трансляція, зберігання файлів, сповіщення, події тощо. Кожна з цих вбудованих функцій допомагає розробникам спростити загальні та складні завдання.

У цій статті ми обговорюємо події Laravel, які дозволяють зареєструвати слухача для конкретних подій, які відбуваються в додатку. Іншими словами, я можу сказати, що користувач зареєструвався, замовлення зробив, продукт додав – це всі події. І якщо вам потрібно запустити певну дію після цих подій, ви можете зареєструвати слухачів. Laravel автоматично телефонує слухачам, зареєстрованим для певних подій.

Для нашої статті я запроваджую подію для реєстрації користувачів. Як тільки користувач зареєструється в програмі, система повинна надіслати їм вітальний електронний лист. Тут реєстрація користувача є подією, а надсилання вітального електронного листа – слухачем.

Сказавши це, давайте подивимося, як використовувати події та слухачі у вашому додатку Laravel.

Реєстрація подій та слухачів у Laravel

Laravel надає EventServiceProviderфайл, в якому потрібно реєструвати ваші події та слухачів. У нашому випадку нам потрібно додати подію та слухач для реєстрації користувачів. Отже, відкрийте файл EventServiceProvider.phpі додайте UserRegisteredв нього подію.

app / Providers / 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". Усередині каталогу "програми / події" ви знайдете файл UserRegistered.php. Подібним чином SendWelcomeEmail.phpфайл знаходиться в каталозі ‘app / Listeners’.

Визначення подій та слухачів

Тепер ви готові до шаблону до події, зареєстрованої вашим користувачем. Наша мета – надіслати вітальний електронний лист користувачеві після реєстрації. Для надсилання електронного листа нам потрібен об’єкт користувача, який містить інформацію про користувача. У UserRegisteredвипадку, якщо я передав об’єкт користувача його конструктору. Далі цей об’єкт передається слухачеві.

app / Події / 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і напишіть код наступним чином.

app / Слухачі / 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, ви можете зателефонувати на подію наступним чином.

app / Http / Controllers / 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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі