В настоящее время я использую 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 есть свои маршруты, объявленные таким же образом, и он также используется таким же образом)
вот мой метод редактирования
и вот ошибка
Класс App \ Http \ Controllers \ Ads \ Campaigns не существует. Это ошибка, которую я получаю. Я не думаю, что у моего CampaignController есть какие-либо проблемы, и если бы это было так, мы бы не узнали, потому что это не тот контроллер, который пытается искать Laravel! : /
Я не думаю, что он не может найти CampaignsController. Я думаю, что это касается правильного контроллера и правильной функции, но что-то не работает в этой функции. Однако без этого кода трудно сказать. Я собираюсь предположить, что функция редактирования пытается загрузить одну кампанию, но не может найти подходящую модель.
Что ж, ошибка явно говорит о том, что не удалось загрузить контроллер Campaign, так есть ли ошибка в том, как отображается сообщение об ошибке? Я пробовал это с пустой функцией редактирования, только сохраняя оператор return с существующим и уже используемым представлением, получил ту же проблему.
Также у меня уже была проблема с кодом из функции моего контроллера, и это не то сообщение об ошибке, с которым я обычно сталкиваюсь. Обратите внимание, что добавление /edit в конце моего маршрута заставляет его работать, но все мои другие маршруты не обязательно должны заканчиваться на /edit.
Возможно, вам не хватает простого оператора импорта в верхней части файла? use App\Campaigns (или любое другое пространство имен вашей модели Campaigns)
@ milo526 обновил мой пост






Вполне возможно, что вы попытаетесь внедрить несуществующий класс в свой контроллер.
Взгляните на конструктор контроллера или отредактируйте маршрут, если у вас нет чего-то вроде этого:
public function edit(Campaigns $campaigns)
{
}
и убедитесь, что вы импортируете кампании из допустимого пространства имен (вероятно, его нет в пространстве имен App\Http\Controllers\Ads.
Если это не помогает, попробуйте найти в каталоге app вхождения Ads\Campaigns, чтобы увидеть, где он используется. Иногда проблема может быть в совершенно другой части вашего приложения.
РЕДАКТИРОВАТЬ
Также убедитесь, что вы не допустили опечаток. По ошибке у вас есть Campaigns, но ваша модель, вероятно, Campaign - возможно ли, что в одном месте у вас есть лишний s в конце?
Я добавил скриншоты в свой исходный пост.
@JorelAmthor Взгляните на РЕДАКТИРОВАТЬ в моем ответе
Все остальные мои маршруты (и их контроллер) в порядке и работают безупречно. Только редактировать глючит.
@JorelAmthor Ну, это не нормально. У вас ошибка Campaigns. У вас где-нибудь есть класс Campaigns? Если нет, найдите строку, в которой вы используете Campaigns, и, возможно, исправьте ее на Campaign.
@JorelAmthor Значит, у вас должна быть где-то опечатка, в вашей ошибке есть App\Http\Controllers\Ads\Campaigns, поэтому у вас должна быть где-то опечатка, и вы пытаетесь использовать Campaigns вместо Campaign
Попробуйте использовать Route :: resource ('кампании', 'Ads \ CampaignsController'); в вашем файле web.php
route::resource имеет префикс + пространство имен с ads, так что проблема не в этом. Еще раз, все мои другие маршруты на 100% в порядке. я могу создавать / читать / удалять без проблем.
У вас есть запрос на получение перед route :: resource в той же группе маршрутов, с некоторым параметром slug или чем-то подобным? Возможно, этот маршрут запускается до метода редактирования в route :: resource
Не могли бы вы также опубликовать полный файл CampaignsController? Возможно, он смотрит на правильный контроллер, но что-то внутри контроллера работает неправильно.