2017-06-26 67 views
0

以下代碼是Laravel發送反饋消息的方法。我想創建這些值是html字段名稱的變量。但是,$email_fieldName不accessibleinside的Mail::send .../Laravel:訪問門面內部的變量

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]);  
} 
+0

你知道封口是什麼嗎? – Mjh

+0

匿名函數的類,我想。 –

+1

Closure =匿名函數。當你想在匿名函數中使用不同範圍的變量時,你必須使用'use'關鍵字來指定它們。你用'$ inputedData'這麼做了,但是沒有用到其他的變量 – Mjh

回答

2

郵件功能無法找到$ email_fieldName你的避風港「T提到它內部使用()

變化

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

與。

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

謝謝你的回答!非常感謝。 –

2

那是因爲你在Mail :: send方法的匿名回調中。 $email_fielName不在該範圍內。

你有use ($inputedData)以同樣的方式,你應該要補充$email_fieldName

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

(可能$name_fieldName太給你的代碼)

+0

謝謝您的解答! –