Php 将变量从控制器传递到邮件类laravel
我正在尝试发送带有附件的邮件。它基于我的控制器的变量。但我不知道如何将变量的内容从控制器传递到邮件类。我的邮件视图在使用vars时没有问题。我需要build方法中的var从我在控制器中生成的目录中选择正确的文件 这将返回以下结果 App\Mail\Aanvraag::build()缺少参数1 邮件类Php 将变量从控制器传递到邮件类laravel,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正在尝试发送带有附件的邮件。它基于我的控制器的变量。但我不知道如何将变量的内容从控制器传递到邮件类。我的邮件视图在使用vars时没有问题。我需要build方法中的var从我在控制器中生成的目录中选择正确的文件 这将返回以下结果 App\Mail\Aanvraag::build()缺少参数1 邮件类 <?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illu
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\App;
use App\Http\Controllers\aanvragenController;
class Aanvraag extends Mailable
{
use Queueable, SerializesModels;
public $aanvraag;
public function __construct($aanvraag)
{
$this->aanvraag = $aanvraag;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('mails.aanvraag')->attach(url('/exports/'. $aanvraag->naam .'sheet.xls'));
}
}
build()
方法不接受任何参数。您需要从build
方法内部访问类参数$this->aanvraag
。我已经尝试过类似的方法,但是我得到了一个未定义变量作为返回。我该怎么做呢?你需要显示这些代码。我已经添加了邮件类和控制器的全部代码。return$this->view('mails.aanvraag')->attach(url('/exports/'.$this->aanvraag->naam.sheet.xls')代码>
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Aanvragen;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
use App\Mail\Aanvraag;
class aanvragenController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index() {
if (Auth::id() == 1) {
$aanvragen = Aanvragen::all();
} else {
$userid = Auth::id();
$aanvragen = Aanvragen::where('user_id', $userid)
->orderBy('id')
->take(10)
->get();
}
return view('aanvragen.index', compact('aanvragen'));
}
public function create() {
return view('aanvragen.create');
}
public function store() {
/* $this->validate(request(), [
'studentnummer' => 'unique:aanvragen'
]);*/
$aanvraag = new Aanvragen;
$aanvraag->naam = request('naam');
$aanvraag->studentnummer = request('studentnummer');
$aanvraag->email = request('email');
$aanvraag->telefoonnummer = request('telefoonnummer');
$aanvraag->stagebedrijf = request('stagebedrijf');
$aanvraag->contactpersoon = request('contactpersoon');
$aanvraag->emailContact = request('emailContact');
$aanvraag->telefoonContact = request('telefoonContact');
$aanvraag->begindatum = request('begindatum');
$aanvraag->einddatum = request('einddatum');
$aanvraag->user_id = Auth::id();
$aanvraag->save();
$data = array (
array('Naam', 'Studentnummer', 'Email', 'Telefoonnummer', 'Stagebedrijf', 'Contactpersoon', 'Email contactpersoon'
, 'Telefoon contactpersoon', 'begindatum', 'einddatum'),
array($aanvraag->naam, $aanvraag->studentnummer, $aanvraag->email, $aanvraag->telefoonnummer, $aanvraag->stagebedrijf,
$aanvraag->contactpersoon, $aanvraag->emailContact, $aanvraag->telefoonContact, $aanvraag->begindatum, $aanvraag->einddatum
)
);
$attachment = $aanvraag->naam;
\Excel::create($aanvraag->naam.'sheet', function ($excel) use ($data) {
$excel->sheet('Sheet1', function ($sheet) use ($data) {
$sheet->fromArray($data);
});
})->save();
\Mail::to('johndoe@info.com')->send(new Aanvraag($aanvraag));
return redirect('/');
}
}