Tìm hiểu Event trong Laravel
Xin chào anh em, cũng đã khá lâu mình mới lại viết bài chia sẻ về những điều thú vị trong Laravel. Để tiếp tục series Laravel và những điều thú vị này , hôm nay mình sẽ cùng tìm hiểu và chia sẻ về Event trong Laravel nhé. Event là sự kiện , là một hành đông hay một tác vụ nào đó xả ra ở một ...
Xin chào anh em, cũng đã khá lâu mình mới lại viết bài chia sẻ về những điều thú vị trong Laravel. Để tiếp tục series Laravel và những điều thú vị này , hôm nay mình sẽ cùng tìm hiểu và chia sẻ về Event trong Laravel nhé.
Event là sự kiện , là một hành đông hay một tác vụ nào đó xả ra ở một thời điểm xác định. Trong những hệ thống web của chúng ta cũng có rất nhiều sự kiện xảy ra. Ví dụ như sự kiện một sản phẩm mới vừa được tạo, hay sự kiện khi chúng ta nhấn vào một button nào đỏ, hay đổi khi trên Facebook chúng ta cũng có những nut like, dislike cũng là một sự kiện...vv. Đôi khi chúng ta cần xử lý những sự kiện này hay nói một cách khác đó chính là cần một phản hồi lại cho user khi kích hoạt một sự kiện nào đó trong hệ thống của chúng ta. Để làm được điều này thì thật may mắn Laravel cũng cấp cho chúng ta cái gọi là Event. Để dễ hiểu hơn một chút thì trong bài viết này mình sẽ đưa ra một ví dụ thực tế cụ thể đó chính là khi một chương trình quảng cáo được tạo ra thì chúng ta se gửi mail cho người dùng hệ thống.
2.1 Đặt vấn đề
Bài toán của chúng ta đưa ra là gửi mail cho tất cả người dùng hệ thống khi có một chương trình quảng cáo được tạo ra.
2.2 Thực thi bài toán
Giả sử bảng discounts của chúng ta chỉ có các trường sau : id, title,content, created_at, updated_at cho nó đơn giản nhé. Các bước tạo model, migration các bạn tự tạo nhé, nếu bạn nào chưa rỏ cách tạo model và migration có thể tham khảo Eloquent Model và Migration của mình ở đây nhé.
2.2.1 Tạo Event và Listener
Tiếp theo chúng ta sẽ tạo event và listener nhé, folder chứa sự kiện là appEvents, folder chứa listener là appListeners. Nhưng ban đầu khi init project Laravel thì các bạn sẽ không thấy đâu, chúng ta có thể tự tạo hoặc sử dụng hỗ trợ command line Artisan. Chúng ta có 2 cách để tạo sự kiện và listener bằng command line
php artisan make:event DiscountEvent // và chúng ta tạo listerner tương ứng cho sự kiện này php artisan make:listener SendEmailDiscountEvent --event="DiscountEvent" //sau khi tạo ra event là listener ở trên chúng ta phải vào app/Providers/EventServiceProvider.php để khai báo protected $listen = [ 'AppEventsDiscountEvent' => [ 'AppListenersSendEmailDiscountEvent' ], ];
hoặc là chúng ta sẽ khai báo trước trong app/Providers/EventServiceProvider.php như trên và sau đó sử dụng câu lệnh sau để generate ra event và listener
php artisan event:generate
Mình thì hay dùng cách thứ 2 hơn vì nó nhanh gọn