以下代码是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]);
}
答案 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) {