2016-05-18 3 views
0

Ich habe versucht, meine Daten von meinem Formular zu bekommen und es an eine E-Mail-Adresse zu senden. Das Problem ist, dass meine Variable nicht definiert wurde. Ich verwende laravel4.2 in meinem aktuellen Projekt.Variable über Post-Methode beim Senden von E-Mail aus Array mit Laravel definieren 4.2

Das ist meine Form Screenshot:

enter image description here

Dies ist die Fehlerinformationen: -

enter image description here

Das in meiner Form Code:

<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> 

Dies ist mein Post Controller:

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!'); 
     } 
    } 
} 

Dies ist meine Routen:

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

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

Antwort

1

Ich denke, der Fehler ist, weil die $ subject im aktuellen Kontext nicht zu sehen ist, ich meine Sie es nicht an die Callback übergeben. Versuchen Sie es durch use(). Ich habe ein funktionierendes Beispiel hier:

$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']); 

Weitere Informationen here

+0

Wenn ich meine ändern '$ message-> zu ($ mailsending, $ name) -> Thema (Input :: get (' subject ')); }); '; Es wird mit falscher Bedingung verarbeitet. –

+0

'$ mail = Mail :: senden ('emails.message', $ data, function ($ message) verwenden ($ mailsending, $ name, $ Betreff) { $ message-> to ($ mailsending, $ name) -> subject ($ subject); }); 'oder Sie können das Array $ GLOBALS verwenden, wie das Beispiel zeigt – LeviTheOne