Laravel:访问外墙内的变量

时间:2017-06-26 07:57:44

标签: php laravel

以下代码是Laravel发送反馈消息的方法。我想创建值为html字段名称的变量。但是,$email_fieldName /

无法访问Mail::send ...
public function sendFeedback(Request $request) {

    $email_fieldName = 'email';
    // ...

    if ($request ->isMethod('post')) {

        // ...

        $inputedData = $request->all();

        // $email_fieldName is accessible here

        $result = Mail::send('email', ['inputedData' => $inputedData], function($message) use ($inputedData) {

            // $email_fieldName is not accessible here
            $message->from($inputedData[$email_fieldName], $inputedData[$name_fieldName]);

            // ...

        });       
    }
}

我尝试了下面的模拟小提琴,它的工作原理。上面的代码中的变量访问有什么问题?

$nameKey = "name";
$testBool = true;

if ($testBool) {
    $array= array("name"=>"Alex", "age"=>22, "student" => true);
    echo($array[$nameKey]);    
}

2 个答案:

答案 0 :(得分:2)

那是因为你在Mail :: send方法的匿名回调中。 $email_fielName不在此范围内。

use ($inputedData)相同,您应该添加$email_fieldName

Mail::send('email', ['inputedData' => $inputedData], function($message) use ($inputedData, $email_fieldName) {

(可能$name_fieldName也给出了你的代码)

答案 1 :(得分:2)

Mail函数找不到$ email_fieldName,因为你没有在use()

中提到它

更改

$result = Mail::send('email', ['inputedData' => $inputedData], function($message) use ($inputedData) {

$result = Mail::send('email', ['inputedData' => $inputedData], function($message) use ($inputedData, $email_fieldName) {