laravel - Laravel 刀片认为我正在尝试解析一个对象,而控制器输出它的字符串
问题描述
我有一个带有以下代码的 MailController:
<?php
namespace App\Http\Controllers;
use App\Mail\Contact;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class MailController extends Controller
{
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
$name = $request->json('name');
$email = $request->json('email');
$phone = $request->json('phone');
$contact = $request->json('contact');
$preference = $request->json('preference');
$subject = $request->json('subject');
$message = $request->json('message');
Mail::to($request->json('email'))->send(new Contact($name, $email, $phone, $contact, $preference, $subject, $message));
if (Mail::failures()) {
return response(500);
}
return response(200);
}
}
当我var_dump()
变量$message
它说它是一个字符串。
这是我的邮件类:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class Contact extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(string $name, string $email, string $phone, string $contact, string $preference, string $subject, string $message)
{
$this->name = $name;
$this->email = $email;
$this->phone = $phone;
$this->contact = $contact;
$this->preference = $preference;
$this->subject = $subject;
$this->message = $message;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject($this->subject)
->view('emails.contact')
->with([
'name' => $this->name,
'email' => $this->email,
'phone' => $this->phone,
'contact' => $this->contact,
'preference' => $this->preference,
'message' => $this->message,
'subject' => $this->subject,
]);
}
}
同样var_dump()
也说它是一个字符串。
然后我在这里得到了我的刀片视图,它说$message
变量是一个对象。
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #f5f8fa; color: #74787e; height: 100%; hyphens: auto; line-height: 1.4; margin: 0; -moz-hyphens: auto; -ms-word-break: break-all; width: 100% !important; -webkit-hyphens: auto; -webkit-text-size-adjust: none; word-break: break-word;">
<style>
@media only screen and (max-width: 600px) {
.inner-body {
width: 100% !important;
}
.footer {
width: 100% !important;
}
}
@media only screen and (max-width: 500px) {
.button {
width: 100% !important;
}
}
</style>
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #f5f8fa; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
<tr>
<td align="center" style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box;">
<table class="content" width="100%" cellpadding="0" cellspacing="0"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
<tr>
<td class="header"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; padding: 25px 0; text-align: center;">
<a href="https://slenderyougemert.nl"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; color: #3f51b5; font-size: 19px; font-weight: bold; text-decoration: none; text-shadow: 0 1px 0 #ffffff;">
{{config('app.name')}}
</a>
</td>
</tr>
<!-- Email Body -->
<tr>
<td class="body" width="100%" cellpadding="0" cellspacing="0"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #ffffff; border-bottom: 1px solid #edeff2; border-top: 1px solid #edeff2; margin: 0; padding: 0; width: 100%; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%;">
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; background-color: #ffffff; margin: 0 auto; padding: 0; width: 570px; -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px;">
<!-- Body content -->
<tr>
<td class="content-cell"
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; padding: 35px;">
<h1
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; color: #2F3133; font-size: 19px; font-weight: bold; margin-top: 0; text-align: left;">
Ingevuld contactformulier door: {{$name}}</h1>
<p
style="font-family: Avenir, Helvetica, sans-serif; box-sizing: border-box; color: #74787e; font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left;">
Het ingevulde contactformulier bevat de volgende data:
<br />
<br />
E-mailadres: {{$email}}
<br />
Telefoonnummer: {{$phone}}
<br />
Graag contact opnemen via: {{$contact}}
<br />
Voorkeur dag en tijd: {{$preference}}
<br />
Betreft: {{$subject}}
<br />
Bericht: {{$message}}
<br />
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
它怎么可能每次都为每个变量返回一个字符串,但是对于$message
突然说它是一个对象的变量?这应该是不可能的。有人可以向我解释发生了什么问题吗?
解决方案
将变量从更改message
为msg
工作。似乎这个变量是为其他东西保留的。如果其他人将来需要它,我会在这里保留这个问题。
推荐阅读
- laravel - Laravel 手动身份验证不会保持记录
- sql - SQL 查询没有得到相应的列
- ruby - 如何在 Ruby 中最好地抽象类变量
- puppet - 使用查找命令在 puppet 中的多个 hiera 文件中查找相同的键
- python-3.x - skfuzzy C-Mean 中的数据与质心协议
- html - 增加按键角 4 的计数器并减少退格键
- python-3.x - 如何在nx图中获取度数为0的节点?
- android - imageview的android工具提示显示“捏缩放”
- sql-server - 我可以在 SQL Server 中使用索引视图来仅获取非重复记录吗
- java - 使用 Stream 的 Java 初始化对象和设置属性