MyTetra Share
Делитесь знаниями!
Как в Laravel создать контроллер в поддиректории, и как в роутинге писать к нему путь
Время создания: 29.03.2019 19:14
Автор: xintrea
Текстовые метки: laravel, роут, route, контроллер, controller, путь, директория, поддиректория, namespace, use, пространство имен
Раздел: Компьютер - Программирование - Язык PHP - Laravel
Запись: xintrea/mytetra_syncro/master/base/1553876067ef8rbrzb25/text.html на raw.github.com

Рано или поздно, у начинающего программиста, использующего Laravel, возникает задача разместить контроллер в подкаталоге, а не просто сваливать все контроллеры в стандартном каталоге:



/app/Http/Controllers



Итак, как создать контроллер в подкаталоге, и как его использовать?


Если взять контроллер, который находится в стандартном каталоге, и просто переместить его в подкаталог, например, в такой:



/app/Http/Controllers/personalArea



То он окажется неработоспособным. Почему, и что нужно сделать, чтобы контроллер заработал? Нужно сделать две вещи.


1. Прописать namespace, соответствующее текущему каталогу. То есть, вместо стандартного:



namespace App\Http\Controllers;



надо прописать



namespace App\Http\Controllers\personalArea;



2. Так как namespace поменялось, то в нашем новом пространстве имен, которое мы сами создали, нет класса Controller, от которого, скорее всего, наследуется наш контроллер. Поэтому необходимо еще добавить строку:



use Illuminate\Routing\Controller;



Теперь контроллер становится работоспособным. Как обратиться к нему в роутинге? Просто в роутинге надо писать имя класса контроллера с учетом подкаталога, разделяя обратным слешем "\", например вот так:



Route::get('/move', 'personalArea\MoveController@index');



В результате, все действия, которые здесь написаны, достаточны для того, чтобы заставить работать контроллер в подкаталоге.



ToDo: Еще надо проверить, как создается контроллер в подкаталоге через artisan.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования