【问题标题】:Laravel Mail - PathToFile variable not foundLaravel Mail - 找不到 PathToFile 变量
【发布时间】:2014-06-15 06:03:19
【问题描述】:

我正在编写这个简单的代码来发送带有附件的邮件,但是,我无法将路径传递给文件变量。

$pathToFile = "Sale-".$id.".csv";

Mail::send(array('html' => 'sales.invoice_template'), $data, function($message)
        {
            $message->to('test@test.com'); // dummy email
            $message->attach($pathToFile);
        });

以上代码抛出:

Undefined variable: pathToFile

另外,我尝试将一个变量(在上面的闭包中添加了 $pathToVariable 和 $message)传递给闭包,但它会引发以下错误:

Missing argument 2 for SaleController::{closure}()

它基本上不识别闭包之外的任何变量。有谁能帮帮我吗?

【问题讨论】:

    标签: php email laravel laravel-4


    【解决方案1】:

    你可以试试这个:

    $pathToFile = "Sale-".$id.".csv";
    
    Mail::send(array('html' => 'sales.invoice_template'), $data, function($message) use ($pathToFile)
    {
        $message->to('test@test.com'); // dummy email
        $message->attach($pathToFile);
    });
    

    指令:

    使用 ($pathToFile)

    ...允许你在闭包中使用你的变量。

    【讨论】:

      【解决方案2】:

      当在闭包中引用 $pathToFile 时,脚本正在寻找要在闭包中声明的 $pathToFile。由于不存在声明,您会看到未定义变量错误。

      函数内部使用的任何变量默认限制在本地函数范围内。

      来源:http://www.php.net/manual/en/language.variables.scope.php

      要修复它,您应该能够将 $pathToFile 传递到您的闭包中,例如:

      Mail::send(array('html' => 'sales.invoice_template'), $data, function($message, $pathToFile)
          {
              $message->to('test@test.com'); // dummy email
              $message->attach($pathToFile);
          });
      

      【讨论】:

      • 忘了提,我已经试过了..它给出“SaleController::{closure}() 的参数 2 缺失”错误(我会更新问题)
      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多