Маршрут, возвращающий 404, независимо от запрашиваемого ресурса — Laravel/Inertis.js — вызвано заказом маршрута

#laravel #laravel-8 #inertiajs

Вопрос:

У меня есть этот маршрут в web.php

 Route::get('crm/projects/add', [CRMController::class, 'addProject'])->name('crm.addProject')->middleware('auth');
 

это в CRMController классе

 public function addProject(){
    return Inertia::render('CRM/Projects/AddProjectPage');
}
 

Независимо от ресурса, который я указываю функции для визуализации, она возвращает 404

Я уверен, что ресурс существует, CRM/Projects/AddProjectPage и я пробовал использовать другие ресурсы, на которых также есть рабочие ссылки на сайте, так что они, безусловно, есть, и это в любом случае возвращает мне 404

на маршрут ссылаются следующим образом в компоненте Vue

 <inertia-link :href="route('crm.addProject')">
    Add Project
</inertia-link>
 

Должно быть, я упускаю что-то совершенно очевидное, дополнительная пара глаз помогла бы, заранее спасибо

ИЗМЕНИТЬ: ошибка в консоли такова

 Failed to load resource: the server responded with a status of 404 (Not Found) projects/add:1
 

Редактировать:
выход из php artisan route:list

 |        | GET|HEAD | crm/projects/add                                      | crm.addProject        | AppHttpControllersCRMController@addProject               | web        
 

Комментарии:

1. маршрут php artisan:список используйте эту команду, чтобы получить список всех маршрутов

2. @Shailendra добавил соответствующий вывод в вопрос

3. <ссылка по инерции :href=»маршрут(‘crm.addProject’)»> вы проверяли, какое значение здесь имеет href и хорошо ли работают другие маршруты проверки подлинности или только этот маршрут выдает ошибку

4. @Shailendra он отображает <a href="https://www.britevisual.com/crm/projects/add">Add Project</a> и да, все остальные auth маршруты работают правильно, включая процесс маршрута/ресурса для добавления другой модели где-то еще, копией которой является эта

Ответ №1:

Может быть, это и очевидно, но пробовали ли вы бежать

 php artisan clear-compiled 
composer dump-autoload
php artisan optimize 
 

И убедитесь, что вы npm run watch работаете, пока работаете с инерцией и Laravel.

Комментарии:

1. Эти команды не решили мою проблему, спасибо за попытку

2. javatpoint.com/npm-clear-cache Может быть, это поможет? Единственная причина, по которой я думаю, что это скорее проблема npm, чем логическая проблема, заключается в том, что ваш контроллер/маршрут/обращение ко мне выглядят правильно настроенными.

3. очистка кэша также не разрешила эту проблему, процесс контроллера/маршрута/ресурса настроен правильно, потому что это копия существующего процесса добавления другого экземпляра модели в CRM, это очень странное поведение, я ценю вашу помощь, если у вас есть еще мысли, пожалуйста, поделитесь ими

4. laracasts.com/discuss/channels/general-discussion/…

Ответ №2:

Вы можете попробовать выполнить php artisan приведенную ниже команду для создания маршрутов с помощью Ziggy

 php artisan ziggy:generate
 

Он сохранит ваши сгенерированные маршруты здесь

 resources/js/ziggy.js
 

Ссылка: https://github.com/tighten/ziggy

Комментарии:

1. Спасибо, но проблема не в маршруте, а в том, что не удается найти ресурс или любой другой ресурс, если на то пошло, в том месте, которое ему указано искать

2. @Liamo’Тул вы уже проверили resources/js/ziggy.js , есть ли ваш маршрут?

3. Ziggy объявлен в качестве директивы в базовом html-коде для приложения vue, потому что именно так оно работает по инерции, нет resources/js/ziggy.js , и я уверен, что это не решит проблему, еще раз спасибо за попытку

4. вы добавили директиву @routes Blade в свой основной макет (перед JavaScript вашего приложения) ?

5. да, именно это я имел в виду в последнем комментарии, это большой сайт с множеством других частей, работающих аналогично этому, это просто пример, когда что-то не так, и я не могу понять, что это такое

Ответ №3:

Проблема, которая не могла быть решена из-за недостаточной информации, предоставленной от моего имени, заключалась в заказе маршрута

этот маршрут

 Route::get('crm/projects/{project:id}', [CRMController::class, 'editProjectPage'])->name('crm.project')->middleware('auth');
 

было объявлено ранее

 Route::get('crm/projects/add', [CRMController::class, 'addProject'])->name('crm.addProject')->middleware('auth');
 

таким образом, из-за того, что разрешение маршрута является упорядоченной вещью, это вызвало у меня проблемы, я бы сказал, что для лучшей практики все маршруты, которые проверяют пройденные параметры после того, как ваши другие маршруты не принимают параметры

вот так

 Route::get('crm/projects/add', [CRMController::class, 'addProject'])->name('crm.addProject')->middleware('auth');

Route::get('crm/projects/{project:id}', [CRMController::class, 'editProjectPage'])->name('crm.project')->middleware('auth');
 

Комментарии:

1. Ах да, это случалось со мной и раньше, чтобы устранить такого рода проблемы, я предлагаю использовать Группы маршрутов , счастливое кодирование 🙂

2. @JasonMigz Я ценю вашу помощь, хорошего дня 🙂