У меня есть контактная форма во всплывающем окне, но когда я нажимаю кнопку «Отправить», страница не найдена, а не перенаправляет меня на домашнюю страницу.
это мой маршрут
Route::post('/contact_us','HomeController@contact_us')->name('contact_us');
Функция в HomeController.php
public function contact_us(Request $request)
{
$validator=Validator::make($request->all(), [
'name' => 'required',
'phone' => 'required',
'email' => 'required|email'
]);
if ($validator->fails())
{
Session::flash('error', "join_us");
return back()->withInput()->withErrors($validator, 'contact');
}
$data = array(
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone,
'created_at' => date('Y-m-d h:i:s'),
);
$email=$request->email;
DB::table('application_from')->insert($data);
return Redirect::to('/')->with('message', 'Application added successfuly');
}
И форма открылась и закрыла теги
{{Form::open(array('route'=>'contact_us','method'=>'post'))}}
..... form inputs
{{Form::close()}}
Когда я нажимаю «Отправить», я получаю
Not Found
The requested URL /contact_us was not found on this server.
Почему пытается загрузить этот URL, когда он должен перезагрузить домашнюю страницу?
ОБНОВЛЕНИЕ с формой
<div class = "modal-body">
{{Form::open(array('route'=>'contact_us','method'=>'post'))}}
<div class = "form-group {{ $errors->contact->has('name') ? 'has-error' : '' }}">
@if ($errors->contact->has('name'))
<span class = "small text-danger ">
<b>{{ $errors->contact->first('name') }}</b>
</span>
@endif
<input type = "text" name = "name" class = "form-control" placeholder = "Name" >
</div>
<div class = "form-group {{ $errors->contact->has('email') ? 'has-error' : '' }}">
@if ($errors->contact->has('email'))
<span class = "small text-danger ">
<b>{{ $errors->contact->first('email') }}</b>
</span>
@endif
<input type = "text" name = "email" class = "form-control" placeholder = "Email" >
</div>
<div class = "form-group {{ $errors->contact->has('phone') ? 'has-error' : '' }}">
@if ($errors->contact->has('phone'))
<span class = "small text-danger ">
<b>{{ $errors->contact->first('phone') }}</b>
</span>
@endif
<input type = "text" name = "phone" class = "form-control" placeholder = "Phone" >
</div>
<div class = "form-group text-center">
<button type = "submit" class = "btn btn-custom btn-sm btn-block">Submit</button>
</div>
{{Form::close()}}
</div>
ОБНОВЛЕНИЕ 2: функция отправки почты
Mail::send('contact_us_email', $data, function($message) use ($email){
$message->to($email)->subject('Site')->cc('[email protected]');
$message->from('[email protected]');
});
Вы пробовали использовать Route::post без /?
Что-то вроде этого: Route::post('contact_us','HomeController@contact_us')->name('contact_us');
Обновлено с полной формой
@GugaNemsitsveridze, пробовал без / -> не нашел
Это может быть глупым решением, но что, если вы попытаетесь использовать простое перенаправление php? header("location:/") ? Вы можете установить такие параметры, как header("location:/" . $_SERVER["something"]
Пробовал вот так $home = 'header("location:/" . $_SERVER["something"]'; и в конце return $home; все же The requested URL /contact_us was not found on this server.
Ладно, думаю, я нашел часть проблемы. По крайней мере, если страница не найдена на сервере. Я изменил маршрут на Route::post('/','HomeController@contact_us')->name('contact_us');. Теперь страница перезагружается в обычном режиме, но письмо по-прежнему не получено.






Пожалуйста, поделитесь полным кодом forms
я проверил ваши function и form и routes ошибок нет
Я думаю, что данные из формы смотрят в database, но redirecting после магазина выдает ошибку
I am not daam sure but may be
Так что попробуйте изменить
ОТ
return Redirect::to('/')->with('message', 'Application added successfuly');
К
return redirect()->back()->with('message','Application added successfuly');
А также ОТ
{{Form::open(array('route'=>'contact_us','method'=>'post'))}}
К
{!! Form::open(['route' => ['contact_us']]) !!}
@method('POST')
Пробовал оба, но так и не нашел.
Также я пробовал без сохранения в базе данных, например. прокомментировал строку, в которой он хранится - все то же самое.
Кажется, вам не хватает csrf-token в форме.
Добавьте поле csrf в форму, как показано ниже:
<input type = "hidden" name = "_token" id = "csrf-token" value = "{{ Session::token() }}" />
ИЛИ
{!! Form::token() !!}
Надеюсь, это решит вашу проблему.
эй, чувак, это не проблема, если _token не найден в HttpRequest, он выкинет 419 с Sorry Your session has expired message
Спасибо, но токен не проблема, и да, он выдает не найденный URL
@Manojkiran.A да, он выдает 419, но недавно в проекте была сделана некоторая настройка, и он выдавал 404 из-за токена.
@Ivanov проблема возникает, когда вы отправляете форму или когда она перенаправляется после успешной отправки?
@KamalPaliwal, я не знаю, как вы разделяете эти два действия. Я имею в виду, что я нажимаю кнопку Submit и вижу новую страницу site.com/contact_us, которая не найдена на сервере.
Чтобы ответить на вашу проблему с электронной почтой
попробуйте добавить следующее в файл .env
# For Localhost Email
MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
# For Hosting Email
MAIL_DRIVER=sendmail
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl
эти учетные данные предназначены для электронной почты на основе Gmail, не забудьте выполнить следующие действия:
Я думаю, что нашел часть проблемы. Потому что такой страницы на самом деле нет contact_us и я изменил маршрут на Route::post('/','HomeController@contact_us')->name('contact_us');. Теперь страница перезагружается в обычном режиме, но письмо по-прежнему не получено.
измените его на Route::post('/contact_us','HomeController@contact_us')->name('contact_us'), если вы все еще хотите сохранить содержимое атрибута действия в своей форме
Нет, это не проблема, какой URL на самом деле. Функция отправки электронной почты есть
могу я увидеть ваш код для отправки электронной почты? это не входит в вопрос
Я отредактировал свой ответ, чтобы он соответствовал вашему вопросу об электронном письме.
Не могли бы вы показать полную форму.