2015-07-19 85 views
4

获取ErrorException的财产Mailer.php线33:试图让非对象的属性Laravel 5.1梅勒试图让非对象

我Mailer.php:

<?php 

namespace App\Mailers; 

use Illuminate\Contracts\Mail\Mailer as Mail; 

abstract class Mailer 
{ 
    /** 
    * @var Mail 
    */ 
    protected $mail; 

    /** 
    * @param Mail $mail 
    */ 
    public function __construct(Mail $mail) 
    { 
     $this->mail = $mail; 
    } 

    /** 
    * @param $to 
    * @param $subject 
    * @param $from 
    * @param $view 
    * @param null $data 
    */ 
    public function mailTo($to, $subject, $from, $view, $data = null) 
    { 
     $this->mail->send($view, $data, function($message) use ($to, $from, $subject) 
     { 
      $message->to($to->email)->subject($subject)->from($from); 
     }); 
    } 
} 

我SiteMailer。 PHP扩展我的Mailer.php抽象类

<?php 

namespace App\Mailers; 

class SiteMailer extends Mailer 
{ 
    /** 
    * @param $data 
    */ 
    public function sendEmailMessageToSupport($data) 
    { 
     $from = env('MAIL_NOREPLY', 'SUPPORT'); 
     $to = env('MAIL_NOREPLY', 'SUPPORT'); 
     $subject = 'Activate Your Account'; 
     $view = 'auth.emails.support'; 

     $this->mailTo($to, $subject, $from, $view, $data); 
    } 
} 

而且我SupportController.php

我SupportRequest FormRequest

<?php 

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class SupportRequest extends Request 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'name' => 'required', 
      'email' => 'required|email', 
      'message_content' => 'required', 
     ]; 
    } 
} 

然后邮件视图

<p> 
    A prospective customer named {{ $name }} <small>{{ $email }}</small> 
    has submitted an inquiry through Our Site. 
</p> 

<p> 
    {{ $message_content }} 
</p> 

无法找到问题的所在。

回答

1

我认为这个问题是在这里:

$message->to(**$to->email**)->subject($subject)->from($from); 

$to是一个电子邮件地址,通过这个判断的字符串:

$to = env('MAIL_NOREPLY', 'SUPPORT'); 

所以,简单地摆脱->email位作为一个字符串做没有属性/属性,例如:

$message->to($to)->subject($subject)->from($from);