2016-05-18 1 views
0

フォームからデータを取得して電子メールアドレスに送信しようとしました。問題は私の変数が未定義になっていることです。私は現在のプロジェクトでlaravel4.2を使用しています。laravelを使用して配列から電子メールを送信する際にpostメソッド経由で変数を定義しない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]')); 
}); 

答えて

1

私は私はあなたがコールバックにそれを渡されていない意味、$対象が現在のコンテキストでは見られないため、エラーがあると思います。 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

を探す '($のmailsending、$名)に$ message->を - >対象(入力::(get' が対象に'))); }); ';それは偽の状態で処理されます。 –

+0

'$ mail = Mail :: send( 'emails.message'、$ data、function($ message)use($ mailsending、$ name、$ subject) { $ message-> to($ mailsending、$ name) - > subject($ subject); });または例として$ GLOBALS配列を使用できます – LeviTheOne

関連する問題