@suhuxa1

Почему laravel говорит, что не существует контроллера?

Привет!
Суть такая, я всегда создаю контроллеры, модели и тд через php artisan. Так вот, делаю второй проект на ларавеле и второй раз сталкиваюсь с проблемой. Пилю на локалке, даю названия контроллерам по-разному, то с маленькой буквы вида: mainController. То с большой, вида AdminController. Так вот, проблема возникает со вторым типом названия. На локалке (openserver) все работает прекрасно, но выгружая на хостинг вылезает сообщение:
Class App\Http\Controllers\adminMainController does not exist

Как вы можете заметить, adminMainController с маленькой буквы начинается, а я ведь создавал с большой! И все роуты, методы и тд привязывал к контроллеру указывая его с большой буквы. В предыдущем проекте все решилось переименованием названия в маленькую буквы. В этот раз я хочу понять как же правильно? И что это за фигня такая, которая вызывает контроллер с маленькой буквы, хотя везде я его записывал с большой?

UPD: скриншот ошибки: joxi.ru/MAjQMPPSv3Pyb2
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
но выгружая на хостинг вылезает сообщение
Это происходит из-за того, что файловая система хостинга (скорее всего, Linux'а) чувствительна к регистру в именах файлов (в отличии от FAT/NTFS Windows'а, на котором у Вас работает OpenServer).

Что бы такого не происходило - называйте контроллеры с большой буквы. А ещё контроллеры можно складывать в отдельные папки, например Controllers\Admin\MainController ...

Что бы узнать, что именно вызывает контроллер с именем с маленькой буквы:
1. Можно поискать по коду всего проекта вот это слово: "adminMainController" (простой метод)
2. Можно запустить отладчик и последовательно пройтись по коду, однозначно выяснив где косяк

UPD. Если хотите избежать подобных проблем в будущем - можете сразу (с начала разработки проекта) использовать любой виртуальный сервер с Linux'ом, запуская сайт там. Вариантов масса всяких:
1. Взять VirtualBox и поставить туда Linux (и настроить всё как надо) самому
2. Взять какого-нибудь готовый Vagrant или что-то в этом духе
3. Взять подготовленный специально для Laravel - Homestead

Лично я использую 1-ый вариант и дома и на работе и проблем за N лет пока ни разу не было. Правда, надо сказать использую такие варианты я не по тому, что у меня проблемы с именами файлов, а по тому, что мне не редко бывают нужны различные unix-утилиты на уровне проекта и тащить их в Windows - весьма сомнительное удовольствие (особенно с учётом того, что далеко не все под Windows они есть)...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@mrSeller
Может таки создал с маленькой?
Всегда пиши с большой
Ответ написан
Комментировать
@k2lhu
Если не ошиблись в названии роута, проверьте его название у себя в роутах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы