2016-12-10 9 views
0

У меня есть два различных маршрута:Misredirect с проверкой в ​​Laravel

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

и их методы:

public function postContact(Request $request){ 

    $token = $request->input('g-recaptcha-response'); 
    if (strlen($token) >0) { 
     $this->validate($request, [ 
     'fname' => 'required', 
     'lname' => 'required', 
     'phone' => 'required',   
     'email' => 'required|email', 
     'subject' => 'min:3', 
     'message' => 'min:10']); 

    $data = array(
     'fname' => $request->fname, 
     'lname' => $request->lname, 
     'phone' => $request->phone, 
     'email' => $request->email, 
     'subject' => $request->subject, 
     'bodyMessage' => $request->message 
     ); 

    Mail::send('emails.contact', $data, function($message) use ($data){ 
     $message->from($data['email']); 
     $message->to('[email protected]'); 
     $message->subject($data['subject']); 
    }); 

    Session::flash('success', 'Your Email was sent sucessfully!'); 

    return redirect('/contact'); 
    } 
} 

и:

public function postInquiry(Request $request){ 
    $token = $request->input('g-recaptcha-response'); 
    if (strlen($token) >0){ 
     $this->validate($request, [ 
     'fname' => 'required', 
     'lname' => 'required', 
     'phone' => 'required', 
     'country' => 'required',    
     'email' => 'required|email', 
     'subject' => 'min:3', 
     'message' => 'min:10']); 
    $data = array(
     'fname' => $request->fname, 
     'lname' => $request->lname, 
     'phone' => $request->phone, 
     'country' => $request->country, 
     'email' => $request->email, 
     'subject' => $request->subject, 
     'bodyMessage' => $request->message 
     ); 

    Mail::send('emails.inquiry', $data, function($message) use ($data){ 
     $message->from($data['email']); 
     $message->to('[email protected]'); 
     $message->subject($data['subject']); 
    }); 

    Session::flash('success', 'Your Email was sent sucessfully!');   

     return view('public.pages.thankyou'); 
    }   
} 

проблема я имею второй метод не работает, как должно быть. Форма запроса находится в поле зрения (single.blade.php). После отказа от формы пользователь должен быть перенаправлен на просмотр (thankyou.blade.php), но он перенаправляется на просмотр (single.blade.php) без отправки электронной почты и не показывает никаких ошибок.

Если удалить часть проверки:

$this->validate($request, [ 
    'fname' => 'required', 
    'lname' => 'required', 
    'phone' => 'required', 
    'country' => 'required',    
    'email' => 'required|email', 
    'subject' => 'min:3', 
    'message' => 'min:10' 
]); 

от второго метода postInquiry он прекрасно работает (отправляет электронную почту и перенаправляет делать thankyou.blade.php)

Может кто-нибудь сказать мне, что я неправильно делаешь здесь ?

ответ

0

Это перенаправление, потому что ваша проверка не выполняется.

Добавьте следующий код в верхней части файла single.blade.php и он расскажет вам, почему проверка терпит неудачу

@if($errors->has()) 
@foreach ($errors->all() as $error) 
    <div>{{ $error }}</div> 
@endforeach 
@endif 

Смотрите здесь для получения дополнительной информации: https://laravel.com/docs/5.3/validation#quick-displaying-the-validation-errors

 Смежные вопросы

  • Нет связанных вопросов^_^