Laravel 5尝试获取非对象电子邮件的属性

时间:2015-04-08 03:53:50

标签: php email laravel laravel-5 mailgun

我的注册函数中写有邮件代码,我收到此错误

  

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

5 个答案:

答案 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>