[英]Attempt to read property "email" on null in laravel
我的代碼中有錯誤,當運行通過 laravel 上的 email 發送數據時“嘗試在 null 上讀取屬性“電子郵件”。
這是我的電子郵件控制器: https://pastebin.com/UhHYQpNz
enter code here
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Mail\HelloMail;
use App\Mail\ProductMail;
use App\Product;
class EmailController extends Controller
{
public function index()
{
return view('welcome');
}
public function dataEmail()
{
$products = Product::all();
return view('data-email', compact('products'));
}
public function send(Request $request)
{
Mail::to($request->email)->send(new HelloMail($request->body));
return back();
}
public function sendproductMail($id)
{
$product = Product::findOrFail($id);
Mail::to($product->costumer_email)->send(new ProductMail($product));
return back();
}
}
產品模板: https://pastebin.com/TFiyiCCS
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="{{asset('style/bootstrap.min.css')}}">
</head>
<body>
<div class="container">
<h1>Selamat</h1>
<p>
Anda telah membeli barang <strong> {{ $product->product_name }} </strong>
</p>
<p>Thank You</p>
<strong>Bakiak</strong>
</div>
<script src="{{asset('script/jquery-3.5.0.min.js')}}"></script>
<script src="{{asset('script/bootstrap.min.js')}}"></script>
</body>
</html>
產品郵箱:https://pastebin.com/FymbCAfF
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ProductMail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public $product;
public function __construct($product)
{
$this->product = $product;
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('product buy Successfully')
->view('mail.product-template');
}
}
請幫助改進我的代碼
在發送任何郵件之前驗證輸入字段email
和body
。
use Illuminate\Support\Facades\Validator;
public function send(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|email|min:4|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
Mail::to($request->email)->send(new HelloMail($request->body));
return back();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.