Модули Laravel + VueJS, маршруты перезаписываются - PullRequest
0 голосов
/ 04 октября 2019

Что ж, у меня проблема с моими маршрутами, все запросы, связанные с папками Modules, не работают. Я использую пакет laravel-modules .

В моем project-folder/routes/web.php я должен использовать маршрутный символ, потому что мой фронт находится в VueJs SPA:

Route::get('/{any}', 'ApplicationController')->where('any', '.*');

ОКЯ использовал свои маршруты API в основной файл api.php, работает нормально, но когда я вставляю Modules/ModuleName/Routes/api.php, маршрут не работает.

Если я удаляю Route::get('any') из основного web.php это работает, я думаю, что на маршрутах возникают какие-то конфликты.

+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+
| Method    | URI                          | Action                                                                         | Middleware   |
+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+
| GET|HEAD  | api/opportunity/channel-sale | App\Modules\Opportunity\Http\Controllers\OpportunityController@channelSaleList | api,auth:api |
| GET|HEAD  | api/opportunity/flow-steps   | App\Modules\Opportunity\Http\Controllers\OpportunityController@flowStepList    | api,auth:api |
| GET|HEAD  | api/opportunity/kanban       | App\Modules\Opportunity\Http\Controllers\OpportunityController@kanbanList      | api,auth:api |
| GET|HEAD  | api/user                     | Closure                                                                        | api,auth:api |
| GET|HEAD  | {any}                        | App\Http\Controllers\ApplicationController                                     | web          |
+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+

Я не знаю, что делать.

1 Ответ

0 голосов
/ 05 октября 2019

У вас есть два варианта: либо передать регулярное выражение в маршрут any, чтобы игнорировать маршруты с префиксом API

Route::get('/{any}', 'ApplicationController')->where('any', '^(?!api).*$');

, либо установить откат на ApplicationController

Route::fallback('ApplicationController');

Из документов

Резервные маршруты

Используя метод Route::fallback, вы можете определить маршрут, который будет выполняться, когда никакой другой маршрут не соответствует входящему запросу. Как правило, необработанные запросы автоматически отображают страницу «404» через обработчик исключений вашего приложения. Однако, поскольку вы можете определить маршрут fallback в вашем файле routes/web.php, все промежуточное ПО в группе web промежуточного ПО будет применяться к маршруту. При необходимости вы можете добавить дополнительное промежуточное программное обеспечение к этому маршруту:

Route::fallback(function () {
    //
});

Резервный маршрут всегда должен быть последним, зарегистрированным вашим приложением.

...