使用laravel从数组发送电子邮件中的未定义变量4.2

问题描述:

我试图从我的表单中获取数据并将其发送到一个电子邮件地址。问题是我的变量没有定义。我在当前的项目中使用laravel4.2使用laravel从数组发送电子邮件中的未定义变量4.2

这是我的表格截图:

enter image description here

这是错误的信息: -

enter image description here

这在我的表单代码:

<form method="post" action="{{URL::route('store_mail_contact')}}"> 
       <div class="row"> 
        <div class="col-lg-6 col-md-6 col-sm-12"> 
         <div class="form-group{{ ($errors->has('name')) ? ' has-error' : ''}}"> 
          <label>Name:</label> 
          <input class="form-control" value="{{Input::old('name')}}" type="text" name="name" placeholder="Enter name..."> 
         </div> 
        </div> 
        <div class="col-lg-6 col-md-6 col-sm-12"> 
         <div class="form-group{{ ($errors->has('email')) ? ' has-error' : ''}}"> 
          <label>Email:</label> 
          <input class="form-control" value="{{Input::old('email')}}" type="email" name="email" placeholder="Enter email..."> 
         </div> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-lg-6 col-md-6 col-sm-12"> 
         <div class="form-group{{ ($errors->has('postcode')) ? ' has-error' : ''}}"> 
          <label>Postcode:</label> 
          <input class="form-control" value="{{Input::old('postcode')}}" type="text" name="postcode" placeholder="Enter postcode..."> 
         </div> 
        </div> 
        <div class="col-lg-6 col-md-6 col-sm-12"> 
         <div class="form-group{{ ($errors->has('country')) ? ' has-error' : ''}}"> 
          <label>Country:</label> 
          <select class="form-control" name="country"> 
           <option value="" selected="selected">Select Country</option> 
           @foreach(AIA::all() as $aia) 
           <option value="{{ $aia->country }}">{{ $aia->country }}</option> 
           @endforeach 
          </select> 
         </div> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-12"> 
         <div class="form-group{{ ($errors->has('subject')) ? ' has-error' : ''}}"> 
          <label>Subject:</label> 
          <input class="form-control" value="{{Input::old('subject')}}" type="text" name="subject" placeholder="Enter subject..."> 
         </div> 
         <div class="form-group{{ ($errors->has('messages')) ? ' has-error' : ''}}"> 
          <label>Messages:</label> 
          <textarea class="form-control" name="messages">{{Input::old('message')}}</textarea> 
         </div> 
        </div> 
       </div> 
       {{Form::token()}} 
       <div class="form-group"> 
        <button type="submit" value ="submit" name="submit" class="btn btn-primary">SUBMIT</button> 
        <button type="reset" value ="reset" name="reset" class="btn btn-primary">RESET</button> 
       </div> 
      </form> 

这是我的后控制器:

public function postContact(){ 
    $validate = Validator::make(Input::all(),array(
     'name'=>'required', 
     'email'=>'required', 
     'subject'=>'required', 
     'country'=>'required', 
     'postcode'=>'required' 
    )); 
    if ($validate->fails()) { 
     return Redirect::route('mail_contact')->withErrors($validate)->withInput(); 
    }else{ 
     $mailsending ="[email protected]"; 
     $name = Input::get('name'); 
     $subject = Input::get('subject'); 
     $postcode = Input::get('postcode'); 
     $country = Input::get('country'); 
     $email = Input::get('email'); 
     $messages= Input::get('messages'); 
     $data = array(
      'email_sending'=>$mailsending, 
      'name'=>$name, 
      'subject'=>$subject, 
      'postcode'=>$postcode, 
      'country'=>$country, 
      'email'=>$email, 
      'messages'=>$messages 
     ); 
     $mail = Mail::send('emails.message', $data, function($message) use ($mailsending,$name) 
     { 
      $message->to($mailsending, $name)->subject($subject); 
     }); 
     if($mail->send()){ 
      return Redirect::route('mail_contact')->with('success','Your account has been created. We have sent you an email to active your account!'); 
     }else{ 
      return Redirect::route('mail_contact') 
     ->with('fail','Mail sent not success!'); 
     } 
    } 
} 

这是我的路线:

Route::group(array('before'=>'csrf'),function(){ 

Route::post('contact',array('as'=>'store_mail_contact','uses'=>'[email protected]')); 
}); 

我认为错误是因为$主题并不在目前情况下看到的,我的意思是你不把它传递给回调。 尝试通过它use()。 我这里有一个工作示例:

$GLOBALS['email'] = $email; 
$GLOBALS['subject'] = $subject;   
       Mail::send('folder.myview', array("key" => $value_passed_to_view), function($message) { 
        $message->to($GLOBALS['email']) 
          ->subject($GLOBALS['subject']); 
       }); 
       unset($GLOBALS['email']); 
       unset($GLOBALS['subject']); 

查找更多信息here

+0

如果我改变我的 '$ MESSAGE->到($ mailsending,$名) - >主题(输入::获得(' 主题“)); }); ';它会处理错误的情况。 –

+0

$ mail = Mail :: send('emails.message',$ data,function($ message)use($ mailsending,$ name,$ subject) { $ message-> to($ mailsending,$ name) - > subject($ subject); });'或者您可以使用$ GLOBALS数组作为示例显示 – LeviTheOne