Для редактирования маршрута используется неправильный контроллер (с помощью помощника по ресурсам Laravel)

В настоящее время я использую laravel 5.4, и я наткнулся на то, что не могу исправить.

В настоящее время я пытаюсь привязать маршрут к контроллеру, используя помощник Laravel resource как таковой: Route::resource('campaigns', 'CampaignsController');.

Я правильно вижу, что мой маршрут находится там, когда я использую PHP artisan:route list, у меня все конечные точки CRUD привязаны к соответствующей функции контроллера. Также обратите внимание, что в настоящее время я делаю это для всего своего маршрута, который должен быть привязан к системе CRUD (то, с чем я работаю, в основном, форма) без каких-либо проблем.

С учетом сказанного, всякий раз, когда я пытаюсь отредактировать Campaign, я получаю сообщение об ошибке: Class App\Http\Controllers\Ads\Campaigns does not exist

Не знаю, зачем искать контроллер Campaigns, а я указываю контроллер CampaignsController. В маршруте кампаний все работает корректно, кроме редактируемого. Кроме того, все мои другие маршруты имеют такую ​​же логику и никогда не сталкивались с этой проблемой.

Есть идеи, почему он ищет не тот контроллер?

Вот мое объявление пространства имен и иерархия папок, и это нормально (обратите внимание, что у adsController есть свои маршруты, объявленные таким же образом, и он также используется таким же образом)

Для редактирования маршрута используется неправильный контроллер (с помощью помощника по ресурсам Laravel)

Для редактирования маршрута используется неправильный контроллер (с помощью помощника по ресурсам Laravel)

вот мой метод редактирования

Для редактирования маршрута используется неправильный контроллер (с помощью помощника по ресурсам Laravel)

и вот ошибка

Для редактирования маршрута используется неправильный контроллер (с помощью помощника по ресурсам Laravel)

Не могли бы вы также опубликовать полный файл CampaignsController? Возможно, он смотрит на правильный контроллер, но что-то внутри контроллера работает неправильно.

aynber 19.09.2018 21:22

Класс App \ Http \ Controllers \ Ads \ Campaigns не существует. Это ошибка, которую я получаю. Я не думаю, что у моего CampaignController есть какие-либо проблемы, и если бы это было так, мы бы не узнали, потому что это не тот контроллер, который пытается искать Laravel! : /

Jorel Amthor 19.09.2018 21:24

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

aynber 19.09.2018 21:26

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

Jorel Amthor 19.09.2018 21:28

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

Jorel Amthor 19.09.2018 21:30

Возможно, вам не хватает простого оператора импорта в верхней части файла? use App\Campaigns (или любое другое пространство имен вашей модели Campaigns)

milo526 19.09.2018 21:34

@ milo526 обновил мой пост

Jorel Amthor 19.09.2018 21:39
Пожалуйста, не размещайте свой код как изображение. Его трудно читать, он мешает поиску по тексту и снижает общую презентационную ценность сообщения.
milo526 19.09.2018 21:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
8
228
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вполне возможно, что вы попытаетесь внедрить несуществующий класс в свой контроллер.

Взгляните на конструктор контроллера или отредактируйте маршрут, если у вас нет чего-то вроде этого:

public function edit(Campaigns $campaigns)
{
}

и убедитесь, что вы импортируете кампании из допустимого пространства имен (вероятно, его нет в пространстве имен App\Http\Controllers\Ads.

Если это не помогает, попробуйте найти в каталоге app вхождения Ads\Campaigns, чтобы увидеть, где он используется. Иногда проблема может быть в совершенно другой части вашего приложения.

РЕДАКТИРОВАТЬ

Также убедитесь, что вы не допустили опечаток. По ошибке у вас есть Campaigns, но ваша модель, вероятно, Campaign - возможно ли, что в одном месте у вас есть лишний s в конце?

Я добавил скриншоты в свой исходный пост.

Jorel Amthor 19.09.2018 21:41

@JorelAmthor Взгляните на РЕДАКТИРОВАТЬ в моем ответе

Marcin Nabiałek 19.09.2018 21:42

Все остальные мои маршруты (и их контроллер) в порядке и работают безупречно. Только редактировать глючит.

Jorel Amthor 19.09.2018 21:47

@JorelAmthor Ну, это не нормально. У вас ошибка Campaigns. У вас где-нибудь есть класс Campaigns? Если нет, найдите строку, в которой вы используете Campaigns, и, возможно, исправьте ее на Campaign.

Marcin Nabiałek 19.09.2018 21:52

@JorelAmthor Значит, у вас должна быть где-то опечатка, в вашей ошибке есть App\Http\Controllers\Ads\Campaigns, поэтому у вас должна быть где-то опечатка, и вы пытаетесь использовать Campaigns вместо Campaign

Marcin Nabiałek 19.09.2018 22:58

Попробуйте использовать Route :: resource ('кампании', 'Ads \ CampaignsController'); в вашем файле web.php

route::resource имеет префикс + пространство имен с ads, так что проблема не в этом. Еще раз, все мои другие маршруты на 100% в порядке. я могу создавать / читать / удалять без проблем.

Jorel Amthor 19.09.2018 22:01

У вас есть запрос на получение перед route :: resource в той же группе маршрутов, с некоторым параметром slug или чем-то подобным? Возможно, этот маршрут запускается до метода редактирования в route :: resource

Kova 19.09.2018 22:23

Другие вопросы по теме