gpt4 book ai didi

php - 在 Laravel 5.4 的浏览器中预览 Mailables 时出错

转载 作者:可可西里 更新时间:2023-11-01 00:29:09 26 4
gpt4 key购买 nike

我正尝试在浏览器中预览 Mailables,但出现此错误。

Object of class App\Mail\ExamNotification could not be converted to string

我遵循了 https://laravel.com/docs/master/mail 中的所有说明并且找不到导致此错误的原因。

这是我的路由文件

Route::get('/mailable', function () {
$parent = App\Parents::find(2);

return new App\Mail\ExamNotification($parent);
});

这是 App\Mail\ExamNotification.php 文件的内容

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

use App\Parents;

class ExamNotification extends Mailable
{
use Queueable, SerializesModels;

/**
* The parent instance.
*
* @var Parent
*/
public $parent;

/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Parents $parent)
{
$this->parent = $parent;
}


/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('donot-replay@example.com')
->markdown('emails.exams.notification');
}
}

这是查看文件的内容

@component('mail::message')
# Introduction
Parent Name is {{ $parent->name }}
The body of your message.

@component('mail::button', ['url' => ''])
Button Text
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent

请注意,当我在构造函数中使用 dd($this->parent) 时,我得到了正确的查询对象。但我无法 dd($this->parent);在构建函数中(即发生上述相同的错误)。

已编辑:请注意,我也可以在路由文件中使用此功能发送邮件

Mail::to('app@example.com')->send(new App\Mail\ExamNotification($parent));

这样也可以

dd(new App\Mail\ExamNotification($parent)); 

没有任何问题上面的输出是

    ExamNotification {#664 ▼
+parent: Parents {#687 ▶}
+from: []
+to: []
+cc: []
+bcc: []
+replyTo: []
+subject: null
#markdown: null
+view: null
+textView: null
+viewData: []
+attachments: []
+rawAttachments: []
+callbacks: []
+connection: null
+queue: null
+delay: null
}

和 dd($this->parent) 的输出;内部构造函数是

    Parents {#687 ▼
#guard: "parent"
#table: "parents"
#dates: array:1 [▶]
#fillable: array:7 [▶]
#hidden: array:2 [▶]
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:15 [▼
"id" => 2
"name" => "James Kurian"
]
#original: array:15 [▶]
#casts: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [▶]
#forceDeleting: false
#rememberTokenName: "remember_token"
#forceDeleting: false
}

所以很明显,问题只出在预览邮件上,而不是发送邮件上。

请告诉我我在哪里犯了错误,在此先感谢。

最佳答案

您遇到此问题的原因是因为渲染 Mailables 的功能仅在 Laravel 5.5 中引入。

您应该能够通过添加到您的 ExamNotification 来自己实现该功能:

public function render()
{
$this->build();

if ($this->markdown) {
return $this->buildMarkdownView()['html'];
}

return view($this->buildView(), $this->buildViewData());
}

您需要更新您的路线以调用 render() 方法:

Route::get('/mailable', function () {
$parent = App\Parents::find(2);

return (new App\Mail\ExamNotification($parent))->render();
});

我只在几个场景中对此进行了测试,但它似乎工作正常。

关于php - 在 Laravel 5.4 的浏览器中预览 Mailables 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46272767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com