【问题标题】:how to call data from laravel mailable in a view如何在视图中调用来自 laravel 可邮寄的数据
【发布时间】:2020-02-15 05:55:27
【问题描述】:

我有一个可邮寄的课程,可以向签订合同的人发送电子邮件。现在我正在尝试设置邮件的样式,但是...我似乎无法调用我在可邮寄类 return 中传递的变量。

我尝试将它传递给可邮寄类中的视图,我尝试调用它,但在邮件中它没有显示出来。

这是我的可邮寄课程:

public function build()
    {
        $data = array(
            'comapny' => $this->data['company'],
            'file' => $this->data['file'],
            'subject' => $this->data['subject'],
            'email' => $this->data['email']
        );
        foreach($data['email'] as $mail)
        return $this->view('mails.contract')->with('data' , $data['company'])->to($mail)->subject($data['subject'])->attach($data['file'])->withSwiftMeassage(function ($message){
            $swiftMessage = $message->getSwiftMessage();
            $headers = $swiftMessage->getHeaders();
            $headers->addTextHeader('From', 'example - contract <example-email@gmail.com>');
            $headers->addTextHeader('Reply-To', 'example-email@gmail.com');
            $headers->addTextHeader('X-Mailer:', 'PHP/' . phpversion());
        });
    }
}

我需要将数据调用到的视图:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p><?php echo $data ?></p>
</body>
</html>

感谢任何帮助

【问题讨论】:

    标签: laravel return laravel-blade laravel-mail


    【解决方案1】:

    您需要将with() 与数组一起使用。

    -&gt;with('data' , $data['company']) 替换为-&gt;with(['data' =&gt; $data['company']])

    【讨论】:

    • 我这样做了,但它仍然没有出现在我的邮件中,我说得对还是应该是 echo $this-&gt;data
    【解决方案2】:

    如果您要返回一个视图来呈现邮件模板的数据(在这种情况下,我假设它的 mails.contract 模板),您是否有一个位于 resources/mails/ 并命名为 contract.blade.php 的刀片模板?

    https://laravel.com/docs/5.8/mail#configuring-the-view
    https://laravel.com/docs/5.8/mail#view-data

    【讨论】:

    • 是的,我在邮件中得到了视图,只是没有变量
    • 看看这一行,在这里你定义了数据变量:'comapny' => $this->data['company'],
    • 我看到了,我修复了它,但它没有做任何事情,不幸的是我仍然没有得到数据
    【解决方案3】:

    您可以将变量传递给可邮寄的类。

    需要创建一个构造函数并定义一个公共函数。

    public $data;
    
    public function __construct( $parameter )
    {
    
        $data = /*Your logic define here and assign to `$this->data`*/
        $this->data = $data;
    
    }
    
    public function build()
    {
        return $this->view('mails.contract')->with(['data' => $this->data])
            ->to($mail)->subject($this->data['subject'])
            ->attach($this->data['file'])
            ->withSwiftMeassage(function ($message){
                $swiftMessage = $message->getSwiftMessage();
                $headers = $swiftMessage->getHeaders();
                $headers->addTextHeader('From', 'example - contract <example-email@gmail.com>');
                $headers->addTextHeader('Reply-To', 'example-email@gmail.com');
                $headers->addTextHeader('X-Mailer:', 'PHP/' . phpversion());
            });
    }
    

    在您的可邮寄类上定义的任何公共属性都将自动对视图可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2018-03-16
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      相关资源
      最近更新 更多