Метод контроллера не вызывается - PullRequest
0 голосов
/ 03 декабря 2018

У меня проблема с тем, что мой метод Laravel не вызывается при отправке формы.

<form class="form" method="post" action="/contact">
<div class="form__field">
<input id="name" name="name" type="text"><label for="name">Name</label>
</div>
<div class="form__field">
<input id="email" name="email" type="email"><label for="email">Email</label>
</div>
<div class="form__field">
<select id="select-floor" name="select-floor">
<option disabled selected>
I'm interested in floor…
</option>
<option value="basement">
Front house
</option>
<option value="ground-floor">
Ground floor
</option>
<option value="first-floor">
First floor
</option>
<option value="second-floor">
Second floor
</option>
<option value="third-floor">
Third floor
</option>
</select><label class="visually-hidden" for="select-floor">Select floor…</label>
</div>
<div class="form__field">
<textarea name="message"></textarea><label for="message">Message</label>
</div><button class="" type="submit">Send Enquiry</button>
</form>

Это мой файл маршрута:

Route::get('/contact', function () {
  return view('pages/contact', [
    'title' => 'Contact',
    'description' => ''
  ]);
});

Route::post('/contact','ContactController@sendEmail');

И ву меня есть контроллер:

class ContactController extends Controller
{
    public function sendEmail(){
        dd('test');
    }
}

Я ожидаю, что будет выведена строка test, и приложение должно просто завершиться.На самом деле происходит то, что страница формы просто перезагружается.

Я проверил консоль разработчика и вижу ошибку 419, но вместо ошибки 419 отображается страница.

Яполностью в тупик.Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Прежде всего, убедитесь, что в вашем проекте есть пакет laravelcollective html или установите его.после этого просто отредактируйте метод своей формы, как показано ниже:

    <form method="post" action="{{ url('/contact') }}">
        {!! csrf_field() !!}

здесь вам не хватает добавить токен csrf в вашу форму, поэтому ваш код работает неправильно.для получения дополнительной информации о csrf, пожалуйста, прочитайте это csrf owasp

0 голосов
/ 03 декабря 2018

Оказывается, предыдущий разработчик представил плагин JavaScript, который перехватывал действие кнопки и препятствовал правильной отправке POST.

Плагин больше не поддерживается, поэтому я удалил его, и моя форма начала работать, как ожидалось.

0 голосов
/ 03 декабря 2018

вы пробовали заменить

<form class="form" method="post" action="/contact">

на

<form method="POST" class="form" action="{{ route('contact') }}" >
    @csrf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...