laravel 9.x 将控制器变量传递给另一个文件
laravel 9.x passing controller variable to another file
我正在尝试将 PagesController.php 上的表单值传递给 HelloMail.php 传递变量后,它将发送邮件。
我是 laravel 的新手,尝试对其进行一些研究并阅读较旧的问题,但其中 none 包含对我的问题的正确答案。
问题:HelloEmail.php 上的未定义变量 => $emailSender - $emailSubject - $emailBody
我需要为此更改路线吗?还是可以在控制器上制作?
web.php
Route::post('/message',[App\Http\Controllers\PagesController::class,'getData'])->name('message');
Route::view('message','message');
Route::get('/send-email', [App\Http\Controllers\EmailController::class, 'sendEmail']);
PagesController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function getData(Request $Req)
{
$emailSender = $Req->input('emailSender');
$emailSubject = $Req->input('emailSubject');
$emailBody = $Req->input('emailBody');
}
}
HelloEmail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use app\Http\Controllers\PagesController;
class HelloEmail extends Mailable
{
use Queueable, SerializesModels;
public function __construct()
{
//
}
public function build()
{
return $this->from($emailSender)
->body('$emailSubject')
->subject('$emailBody');
}
}
EmailController.php
namespace App\Http\Controllers;
use App\Mail\HelloEmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class EmailController extends Controller
{
public function sendEmail()
{
$toAddress= "email@example.com";
Mail::to($toAddress)->send(new HelloEmail);
dd("Email is sent successfully.");
}
}
不确定您要从单独的请求发送电子邮件中寻找什么,但您可以将变量从构造函数传递给 HelloEmail class
示例
HelloEmail
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use app\Http\Controllers\PagesController;
class HelloEmail extends Mailable
{
use Queueable, SerializesModels;
private $emailSender;
private $emailSubject;
private $emailBody;
public function __construct($emailSender, $emailSubject, $emailBody)
{
$this->emailSender = $emailSender;
$this->emailSubject = $emailSubject;
$this->emailBody = $emailBody;
}
public function build()
{
return $this->from($this->emailSender)
->body($this->emailBody)
->subject($this->emailSubject);
}
}
并在 EmailController
namespace App\Http\Controllers;
use App\Mail\HelloEmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class EmailController extends Controller
{
public function sendEmail()
{
$toAddress= "email@example.com";
Mail::to($toAddress)->send(new HelloEmail('sender@example.com', 'email subject !', 'the body'));
dd("Email is sent successfully.");
}
}
希望有用
我正在尝试将 PagesController.php 上的表单值传递给 HelloMail.php 传递变量后,它将发送邮件。 我是 laravel 的新手,尝试对其进行一些研究并阅读较旧的问题,但其中 none 包含对我的问题的正确答案。
问题:HelloEmail.php 上的未定义变量 => $emailSender - $emailSubject - $emailBody
我需要为此更改路线吗?还是可以在控制器上制作?
web.php
Route::post('/message',[App\Http\Controllers\PagesController::class,'getData'])->name('message');
Route::view('message','message');
Route::get('/send-email', [App\Http\Controllers\EmailController::class, 'sendEmail']);
PagesController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function getData(Request $Req)
{
$emailSender = $Req->input('emailSender');
$emailSubject = $Req->input('emailSubject');
$emailBody = $Req->input('emailBody');
}
}
HelloEmail.php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use app\Http\Controllers\PagesController;
class HelloEmail extends Mailable
{
use Queueable, SerializesModels;
public function __construct()
{
//
}
public function build()
{
return $this->from($emailSender)
->body('$emailSubject')
->subject('$emailBody');
}
}
EmailController.php
namespace App\Http\Controllers;
use App\Mail\HelloEmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class EmailController extends Controller
{
public function sendEmail()
{
$toAddress= "email@example.com";
Mail::to($toAddress)->send(new HelloEmail);
dd("Email is sent successfully.");
}
}
不确定您要从单独的请求发送电子邮件中寻找什么,但您可以将变量从构造函数传递给 HelloEmail class
示例
HelloEmail
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use app\Http\Controllers\PagesController;
class HelloEmail extends Mailable
{
use Queueable, SerializesModels;
private $emailSender;
private $emailSubject;
private $emailBody;
public function __construct($emailSender, $emailSubject, $emailBody)
{
$this->emailSender = $emailSender;
$this->emailSubject = $emailSubject;
$this->emailBody = $emailBody;
}
public function build()
{
return $this->from($this->emailSender)
->body($this->emailBody)
->subject($this->emailSubject);
}
}
并在 EmailController
namespace App\Http\Controllers;
use App\Mail\HelloEmail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class EmailController extends Controller
{
public function sendEmail()
{
$toAddress= "email@example.com";
Mail::to($toAddress)->send(new HelloEmail('sender@example.com', 'email subject !', 'the body'));
dd("Email is sent successfully.");
}
}
希望有用