Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Простите за нубский вопрос, только начинаю разбираться с фреймворком.
Но у меня почему-то не работает простейшая конструкция задания группы неявных маршрутов, которую применяют во многих уроках
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 контроллера) - работают нормально.
Что я не так делаю, подскажите?
и вопрос 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 , разве не так?)
Хочется уже доразобраться с маршрутами окончательно, чтобы потом не возвращаться к этому особо.
Ведь по сути это достаточно простая тема. Но вот такие затыки) заранее спасибо за ответы всем!
Не в сети
Если задаёшь маршруты в таком виде.
Route::controller('users', 'UserController');
То нужно в контроллере методы писать в такой форме.
Префикс(post,get) и имя метода.
public function getIndex() { // }
Не в сети
Оу, точно - спасибо)
А по второму моменту? По поводу имени контроллера DocumentsController? Почему он какой-то файл Documents.php ищет и выплевывает исключение?
Изменено Phizio (15.07.2015 12:40:59)
Не в сети
не проще создавать контроллеры через консоль ?
Не в сети
Через консоль и создавался, дружище )
сам контроллер создан через artisan
class DocsController extends Controller
и содержит все методы (index, create, ...)
Не в сети
По второму вопросу могу сказать только то, что у меня в аналогичной ситуации всё работает. Проверил на примере с Documents контроллером.
Не в сети
Где-то закешировалось, похоже.. (
Хотя сбрасывал artisan-ом кеш и роутинга, и общий кэш laravel, - но не помогло.
Переименовал в Docs, все работает, но вот такие затыки как-то демотивируют (и покоя не дают
Думаешь, а что будет как копнешь чуть глубже? Когда уже и на форуме ответа не сыскать будет.
Печалько..
Не в сети
Посмотри в папке vendor/composer/autoload_*
Можешь выполнить команду: composer dump-autoload
Не в сети
'App\\Http\\Controllers\\DocumentsController' => $baseDir . '/app/Http/Controllers/DocumentsController.php',
еще попробовал поиском Documents.php поискать злополучный/некорректный - не нашлось.
Т.е. как будто бы все четко должно роутиться, DocumentsController.php, как и положено по спецификации.
А благодаря дампу композера нашел один свой косяк (не относящийся к данной теме):
Выполнив composer dump-autoload, увидел, что две миграции содержали одинаковое имя класса CreateUsersTable
(первая была "из коробки", а вторую я видимо по ошибке назвал точно так же)
Не в сети
Страницы 1