2016-05-18 3 views
0

Я пытался получить данные из своей формы и отправить ее на адрес электронной почты. Проблема в том, что моя переменная не определена. Я использую laravel4.2 в своем текущем проекте.Неопределенная переменная через метод post при отправке электронной почты из массива с использованием 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]')); 
}); 

ответ

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, $ название) -> Subject (Input :: Get (' предмет «)); }); '; он будет обрабатываться с ложным условием. –

+0

'$ mail = Mail :: send ('emails.message', $ data, function ($ message) use ($ mailsending, $ name, $ subject) { $ message-> to ($ mailsending, $ name) -> subject ($ subject); }); 'или вы можете использовать массив $ GLOBALS, как показывает пример – LeviTheOne