Laravel - Как иметь несколько маршрутов публикации в сети. php - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать страницу с двумя формами, обе установлены method="post", а также отправка <button> для каждой формы. Действие отправки первой формы обрабатывается FirstController, а второй - SecondController. В файле маршрута web.php мне нужно объявить две функции маршрута для каждой кнопки отправки, и я хочу сохранить тот же URL-адрес, но кнопка никак не узнает, какой пост должен вызывать. Я видел некоторые решения по созданию заданий для обработки каждой кнопки, но в любом случае я могу указать Laravel, какой маршрут публикации вызывать?

Скелет выглядит следующим образом:

web. php

Route::post('/', 'FirstController@store');

Route::post('/', 'SecondController@sendEmail');

Первый контроллер. php

class FirstController extends Controller
{
    public function store()
    {
        /*
            create a new entry to the data base
        */
    }
}

Второй контроллер. php

class SecondController extends Controller
{
    public function sendEmail()
    {
        Mail::to('recipient@abc.com')->send(new SampleMail());
    }
}

Ответы [ 2 ]

3 голосов
/ 10 июля 2020

вы не можете использовать один и тот же URL-адрес одним и тем же методом, например POST, GET и т.д. Что вы можете сделать, так это просто передать некоторые параметры, чтобы определить, для отправки почты или для хранения данных. Но вы должны использовать тот же контроллер и ту же функцию. Я не рекомендую вам это делать, потому что это нарушает принцип единственной ответственности в SOLID. Просто напишите два маршрута с разными URL-адресами и сделайте это. Если необходимо поддерживать один и тот же URL-адрес, вы можете сделать это с помощью методов GET и POST.

0 голосов
/ 10 июля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...