簡體   English   中英

嘗試在 laravel 中的 null 上讀取屬性“電子郵件”

[英]Attempt to read property "email" on null in laravel

我的代碼中有錯誤,當運行通過 laravel 上的 email 發送數據時“嘗試在 null 上讀取屬性“電子郵件”。

嘗試讀取 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');
    }
}

請幫助改進我的代碼

在發送任何郵件之前驗證輸入字段emailbody

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM