2017-06-26 9 views
0

以下のコードは、Laravelによるフィードバックメッセージの送信方法です。値がhtmlのフィールド名である変数を作成したいと思います。しかし、$email_fieldNameMail::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]); 

      // ... 

     });  
    } 
} 

をaccessibleinsideされていない私は、シミュレーションフィドルの下にしようと、それが動作します。上記のコードでの可変アクセスに何が問題なのですか?

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

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

クロージャが何であるか知っていますか? – Mjh

+0

匿名関数のクラスだと思います。 –

+1

クロージャ=匿名関数。匿名関数で異なるスコープの変数を使用する場合は、 'use'キーワードを使用して変数を指定する必要があります。あなたは '$ inputedData'でそれをしましたが、あなたが使っている変数の残りの部分ではそうではありませんでした。 – Mjh

答えて

2

メール機能「が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もあなたのコード与えられた)あなたの避難所として$ email_fieldNameを見つけることができません

+0

解説ありがとうございました! –

関連する問題