Laravel ошибка маршрута не определена, если она четко определена - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь обработать базовую c форму с помощью laravel и сталкиваюсь с проблемой, когда мой POST-маршрут не обнаружен и приводит к ошибке не определенного маршрута в шаблоне блэйда. Моя цель - устранить эту ошибку и отправить форму на контроллер, а затем получить доступ к различным полям формы с параметром $ request.

Это ошибка: Route [become-a-customer] not defined.

Я ценю любые предложения о том, как решить эту проблему.

Форма

<form action="{{ route('become-a-customer') }}" method="post" class="col-md-8 offset-md-2">
    <div class="form-row">
        <div class="form-group col-md-6">
            <label for="first_name">First Name</label>
            <input name="last_name" type="email" class="form-control" id="first_name" placeholder="First Name">
        </div>
        ...
    </div>
    <input type="hidden" name="_token " value="{{ Session::token() }}"/>
    <button type="submit" class="btn">SUBMIT</button>
</form>

Интернет. php

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer');

Стать клиентомКонтроллер. php

class BecomeACustomerFormController extends Controller
{
    public function postBecomeACustomer(Request $request)
    {
        $firstName = $request['first_name'];
        $lastName = $request['last_name'];
        ...
        ...
        return redirect()->back();
    }
}

Ответы [ 5 ]

4 голосов
/ 09 марта 2020
Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');
0 голосов
/ 09 марта 2020

В своем шаблоне блэйда вы использовали Именованный маршрут для действия формы, но он не указан в файле маршрута (Web. php).

Измените свой Файл маршрута, подобный этому

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');

ИЛИ, вы должны изменить действие формы следующим образом:

action="{{ url('become-a-customer') }}"

Использование именованного маршрута - лучший способ для проекта Laravel.

0 голосов
/ 09 марта 2020

вы также можете определить следующим образом: где «as» используется для обозначения вашего маршрута

Route::post('/become-a-customer',  ['uses' => 'BecomeACustomerFormController@postBecomeACustomer', 'as' => 'become-a-customer']);
0 голосов
/ 09 марта 2020

route() метод использует имя маршрута, которое не определено. Вы можете определить его с помощью метода name() на маршруте, как показано ниже

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');

, подробнее см. Документация

0 голосов
/ 09 марта 2020

Проверьте ваши Apache или Nginx конфигурации. Иногда перенаправление с https на http изменяет метод с POST на GET.

Я бы рекомендовал установить временную конечную точку для GET по тому же маршруту и ​​поместить в нее оператор dd(), чтобы проверить теорию .

...