Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.07.2015 18:12:37

Не работают группы неявных маршрутов к контроллерам

Простите за нубский вопрос, только начинаю разбираться с фреймворком.
Но у меня почему-то не работает простейшая конструкция задания группы неявных маршрутов, которую применяют во многих уроках
Route::controller('docs', 'DocsController');
сам контроллер создан через artisan
class DocsController extends Controller
и содержит все методы (index, create, ...)
Выдает ошибку NotFoundHttpException in RouteCollection.php line 143:
Вывел все маршруты в консоли artisan:
GET|HEAD|POST|PUT|PATCH|DELETE | docs/{_missing} |      | App\Http\Controllers\DocsController@missingMethod
Явно заданные маршруты (через ::get и @method контроллера) - работают нормально.
Что я не так делаю, подскажите? wink

и вопрос 2 - у меня почему-то упорно не работала конструкция
Route::get('documents', 'DocumentsController@index');
Причем стоило переименовать везде Documents на Documents2 - все работало.
Такое чувство, что laravel закешировал где-то этот documents маршрут, и адресовал на какой-то не тот контроллер.
Очистка кеша марштуров в артизане тоже не помогала... Или documents - это какое-то запрещенное имя?
В ошибке кстати было, что фреймворк не может найти файл Documents.php при этом
include(C:\OpenServer\domains\laravel.loc/app/Http/Controllers/Documents.php): failed to open stream: No such file or directory
(странно, ведь должен был искать DocumentsController.php , разве не так?)

Хочется уже доразобраться с маршрутами окончательно, чтобы потом не возвращаться к этому особо.
Ведь по сути это достаточно простая тема. Но вот такие затыки) заранее спасибо за ответы всем!

Не в сети

#2 15.07.2015 00:59:04

Re: Не работают группы неявных маршрутов к контроллерам

Если задаёшь маршруты в таком виде.
Route::controller('users', 'UserController');

То нужно в контроллере методы писать в такой форме.
Префикс(post,get) и имя метода.

public function getIndex() {  //  }

http://laravel.com/docs/5.1/controllers … ontrollers

Не в сети

#3 15.07.2015 12:35:06

Re: Не работают группы неявных маршрутов к контроллерам

Оу, точно - спасибо)
А по второму моменту? По поводу имени контроллера DocumentsController? Почему он какой-то файл Documents.php ищет и выплевывает исключение?
RGrgEDVnxKRJaxBMEbPBP99PTCiEqH36-dhmd06Aoqid6t2rA8EfBsc-f7B1jYZG6Pj9R_QI-CR9AKC3KOYflQ==?uid=0&filename=2015-07-15%2012-38-21%20Скриншот%20экрана.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&tknv=v2&rtoken=68a40c23afb0843fcbaa250591faf9be&force_default=no

Изменено Phizio (15.07.2015 12:40:59)

Не в сети

#4 15.07.2015 12:37:36

Re: Не работают группы неявных маршрутов к контроллерам

не проще создавать контроллеры через консоль ?

Не в сети

#5 15.07.2015 12:41:55

Re: Не работают группы неявных маршрутов к контроллерам

Через консоль и создавался, дружище )

Phizio пишет:

сам контроллер создан через artisan
class DocsController extends Controller
и содержит все методы (index, create, ...)

Не в сети

#6 15.07.2015 16:02:47

Re: Не работают группы неявных маршрутов к контроллерам

По второму вопросу могу сказать только то, что у меня в аналогичной ситуации всё работает. Проверил на примере  с Documents контроллером.

Не в сети

#7 15.07.2015 16:48:35

Re: Не работают группы неявных маршрутов к контроллерам

Где-то закешировалось, похоже.. (
Хотя сбрасывал artisan-ом кеш и роутинга, и общий кэш laravel, - но не помогло.
Переименовал в Docs, все работает, но вот такие затыки как-то демотивируют (и покоя не дают wink
Думаешь, а что будет как копнешь чуть глубже? Когда уже и на форуме ответа не сыскать будет.
Печалько..

Не в сети

#8 15.07.2015 17:15:43

Re: Не работают группы неявных маршрутов к контроллерам

Посмотри в папке vendor/composer/autoload_* 

Можешь выполнить команду: composer dump-autoload

Не в сети

#9 16.07.2015 13:27:07

Re: Не работают группы неявных маршрутов к контроллерам

'App\\Http\\Controllers\\DocumentsController' => $baseDir . '/app/Http/Controllers/DocumentsController.php',
еще попробовал поиском Documents.php поискать злополучный/некорректный - не нашлось.
Т.е. как будто бы все четко должно роутиться, DocumentsController.php, как и положено по спецификации.
А благодаря дампу композера нашел один свой косяк (не относящийся к данной теме):
Выполнив composer dump-autoload, увидел, что две миграции содержали одинаковое имя класса CreateUsersTable
(первая была "из коробки", а вторую я видимо по ошибке назвал точно так же)

Не в сети

Подвал раздела