无法访问对象laravel 5.3

时间:2017-01-06 09:47:16

标签: php arrays laravel-5.3

我正在使用laravle 5.3 mailables发送电子邮件。我想通过方法传递数据进行查看。

我创建了一个可邮寄的 MytestMail.php

<?php

namespace App\Mail;

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

class MytestMail extends Mailable {
    public $dataArray;
    use Queueable,
        SerializesModels;

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

        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build() {

        $address = 'test@gmail.com';
        $name = 'asasa';
        $subject = 'sasasasub';


        return $this->view('emails.myTestMail')
                ->from($address, $name)
                ->cc($address, $name)
                ->bcc($address, $name)
                ->replyTo($address, $name)
                ->subject($subject)
               ->with([
                        'name' => $this->dataArray->name,
                        'password' => $this->dataArray->password,
                        'E_id' => $this->dataArray->E_id,
                        'email' => $this->dataArray->email,


                    ]);
        ;
    }

}

现在我收到错误

  

尝试获取非对象的属性

当我print_r $ this-&gt; dataArray 时,我得到了一个包含值的数组

Array ( [name] => sdsdsds [E_id] => 0123 [password] => sdsd [username]
=> sdsdsdsds@sgxcxcxmail.com )

请帮帮我...为什么我收到此错误消息?

2 个答案:

答案 0 :(得分:3)

当你print_r它告诉你th的数据类型时,所以当访问变量->Array<- ( [name] => sdsdsds [E_id] => 0123 [password] => sdsd [username]=> sdsdsdsds@sgxcxcxmail.com )时,一定要像$dataArray或{{1}这样的数组访问它等等......

答案 1 :(得分:2)

问题在这里

'name' => $this->dataArray->name,

您尝试从name访问$this-dataArray,即使name是数组的索引,因此它不是对象的属性。错误消息是不言自明的。

  

尝试获取非对象的属性

你应该做的是

'name' => $this->dataArray['name'],

与您提问中提到的其他数组元素相同。