我的注册函数中写有邮件代码,我收到此错误
7c8c0426cb92aba181a5916d6b3e33a6第2行中的ErrorException: 试图获取非对象的属性(查看:/Users/aliayaz/Adcells-master/resources/views/emails/register-activate.blade.php)
Mail::queueOn('Email-Activation', 'emails.register-activate', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Welcome ' . $user->first_name);
});
我在资源/观看/电子邮件
下注册激活文件@extends('emails/layouts/default')
@section('content')
<p>Hello {{{ $user->first_name }}},</p>
<p>Welcome to SiteNameHere! Please click on the following link to confirm your SiteNameHere account:</p>
<p><a href="{{{ $activationUrl }}}">{{{ $activationUrl }}}</a></p>
<p>Best regards,</p>
<p>@lang('general.site_name') Team</p>
@stop
此代码在laravel 4.2下完美运行,我想升级到5.0
编辑1: 我没有名字的文件 7c8c0426cb92aba181a5916d6b3e33a6
答案 0 :(得分:2)
这是一个专门针对Mail::queue
及其所有子集方法的问题。当通过队列系统处理数据时,它会被序列化,然后在它到达电子邮件视图时被反序列化。
但是,如果您要将上面的代码段更改为Mail::send
,则会发现它有效。
处理此问题的一种方法是做出网站范围的决定,即只将数组传递到视图中。
答案 1 :(得分:0)
尝试合并To&amp;主题逻辑在一个陈述中。
$m->to($user->email, $user->first_name . ' ' . $user->last_name)->subject('Welcome ' . $user->first_name);
您也可以将代码粘贴到此文件中&#34; 7c8c0426cb92aba181a5916d6b3e33a6&#34;进一步了解造成这个问题的原因。
答案 2 :(得分:0)
确保$ data [&#39; user&#39;]存在并且也是一个对象。可能发生了这种情况。它试图从$ user获取信息并且它不存在。
答案 3 :(得分:0)
Mail::send('emails.register-activate', $data, function($message) {
$message->to(Input::get('email'), Input::get('username'))
->subject('Verify your email address');
});
如果它说输入未找到代码放在页面顶部的代码
use Illuminate\Support\Facades\Input;
答案 4 :(得分:0)
您必须在视图中传递数据数组。 您没有在视图中传递$ user数据。您必须在视图中传递$ user变量。然后,只有您可以访问值为$的用户
$data = array('user' => $user);
Mail::queueOn('Email-Activation', 'emails.register-activate', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Welcome ' . $user->first_name);
});
然后按以下方式打印您的视图
<p>Hello {{{ $user['first_name'] }}},</p>