我正在开发一个 Laravel 5.8 API 应用程序,该应用程序需要在用户成功下订单时通知他们。订单流程有效,但我没有收到电子邮件通知。以下是我将如何使用 mailtrap 进行演示MAIL_DRIVER=smtpMAIL_HOST=smtp.mailtrap.ioMAIL_PORT=2525MAIL_USERNAME=**************MAIL_PASSWORD=**************MAIL_ENCRYPTION=tls在订单模型中,我使用了可通知特征<?phpnamespace App;use App\User;use App\Product;use Illuminate\Notifications\Notifiable;use Illuminate\Database\Eloquent\Model;class Order extends Model{ use Notifiable; ...}创建OrderSuccesful通知并OrderController像这样在商店方法中使用它<?php...use App\Notifications\OrderSuccessful;use App\Order;use Illuminate\Http\Request;class OrderController extends Controller{ public function store(Request $request, Product $product) { // create order $order = Order::create([ 'user_id' => auth()->user()->id, 'product_id' => $product->id, 'barrels' => $request->barrels, 'status' => 'successful' ]); $user = auth()->user(); // notify user of successful order $user->notify(new OrderSuccessful($order)); return new OrderResource($order); }}现在,当我成功下单时,我没有收到通知。由于我是第一次使用通知,我想知道我错过了什么。如果有人能指出这一点并告诉我如何解决它,我将不胜感激。
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
在这里,您需要将Notifiable特征添加到User模型而不是Order.
在 User.php
class User extends Authenticatable
{
use Notifiable;
//
}
OrderSuccessful使用artisan以下方法创建通知类:
php artisan make:notification OrderSuccessful
在OrderSuccessful课堂上:
protected $order;
public function __construct(App\Order $order)
{
$this->order = $order;
}
设置完上述所有内容后,您现在应该可以使用以下代码触发电子邮件:
$user->notify(new OrderSuccessful($order));
笔记:
确保您的users表格中有一个email字段,其中包含正确的电子邮件地址。
希望能帮助到你!
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消