Что Laravel папку контроллер маршрутизации
Я новичок в Ларавеле. Чтобы попытаться сохранить мое приложение организованным, я хотел бы поместить мои контроллеры в подпапки папки контроллера.
controllers\
---- folder1
---- folder2
Я попытался проложить маршрут к контроллеру, но ларавель не нашел его.
Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');
Что я делаю не так?
Ответы - Что Laravel папку контроллер маршрутизации / Laravel Controller Subfolder routing

17.09.2013 05:07:26
Добавьте контроллеры в свои папки:
controllers\
---- folder1
---- folder2
Создайте свой маршрут, не указывая папку:
Route::get('/product/dashboard', 'MakeDashboardController@showDashboard');
Бежать
composer dump-autoload
И попробуй еще раз


ClassLoader::addDirectories
чего нет в composer, вам также понадобится artisan.


composer dump-autoload
работает и на меня. Если вы используете ОС Windows, вы можете использовать a .bat-файл для запуска composer dump-autoload
вместо того, чтобы каждый раз вводить CMD. Вот что я использую: PUSHD "E:\path\to\non-public" newline START /B "Window 1" composer dump-autoload newline pause


5.4
), является ли Auth специальной папкой? Я переместил ранее работавший контроллер из Controllers
в Controllers/Auth
, обновил пространство имен, не указал подпапку в web.php
, оставил его прежним, очистил маршруты, автопогрузку и кэш, похоже, ничего не помогает.

Folder\Class@method
)





26.03.2014 11:12:59
1.создайте свою подпапку так же, как следующие:
app
----controllers
--------admin
--------home
2.настройте свой код в приложении / маршрутах.РНР
<?php
// index
Route::get('/', 'Home\HomeController@index');
// admin/test
Route::group(
array('prefix' => 'admin'),
function() {
Route::get('test', 'Admin\IndexController@index');
}
);
?>
3.напишите sth в app / controllers / admin / IndexController.php, например:
<?php
namespace Admin;
class IndexController extends \BaseController {
public function index()
{
return "admin.home";
}
}
?>
4.доступ к вашему сайту, например: localhost / admin / test вы увидите "админ.главная" на странице
ps: Пожалуйста, игнорируйте мой плохой английский


07.06.2014 04:49:48
Я использую Laravel 4.2. Вот как я это делаю:
У меня есть структура каталогов, как эта:
апп
--контроллеры
----администратор
------ AdminController.РНР
После того, как я создал контроллер, я вставил в него композитора.json путь к новому каталогу администратора:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/controllers/admin",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
Далее я побежал
composer dump-autoload
и затем
php artisan dump-autoload
Потом в маршрутах.php у меня контроллер включен вот так:
Route::controller('admin', 'AdminController');
И все работает нормально.



15.11.2014 10:23:15
Для тех, кто использует Laravel 5, необходимо задать пространство имен для контроллера в подкаталоге (Laravel 5 все еще находится в разработке, и изменения происходят ежедневно)
Чтобы получить структуру папок, как:
Http
----Controllers
----Admin
PostsController.php
PostsController.php
пространство имен Admin\PostsController.php файл вот так:
<?php namespace App\Http\Controller\Admin;
use App\Http\Controllers\Controller;
class PostsController extends Controller {
//business logic here
}
Тогда ваш маршрут для этого таков:
$router->get('/', 'Admin\PostsController@index');
И, наконец, не нужно делать ни композитора, ни ремесленника.
composer dump-autoload
или
php artisan dump





App\Http\Controllers\Auth\Controller
не найден, почему он добавляет слово Controller
на там, и теряет фактическое имя контроллера? Я думаю, что это делает Слэш. -o
не помогло.


24.05.2015 05:20:23
Для * * Laravel 5 или Laravel 5.1 LTS оба **, если у вас есть несколько контроллеров в папке администратора, Route::group
будет очень полезно для вас. Например:
Обновление: работает с Laravel 5.4
Структура моих папок:
Http
----Controllers
----Api
----V1
PostsApiController.php
CommentsApiController.php
PostsController.php
Постапиконтроллер:
<?php namespace App\Http\Controllers\Api\V1;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PostApiController extends Controller {
...
В Моем Маршруте.php, я установил namespace
, и в целом это выглядит так:
Api\V1
Для получения сведений о перемещении для создания подпапки перейдите по этой ссылке .





18.04.2017 02:03:35
Я думаю, что для хранения контроллеров для Admin и Front в отдельных папках пространство имен будет работать хорошо.
Пожалуйста, посмотрите на нижеприведенную структуру каталогов Laravel, которая отлично работает для меня.
app
--Http
----Controllers
------Admin
--------DashboardController.php
------Front
--------HomeController.php
Маршруты "маршруты/веб.php " файл будет выглядеть следующим образом
/* All the Front-end controllers routes will work under Front namespace */
Route::group(['namespace' => 'Front'], function () {
Route::get('/home', 'HomeController@index');
});
А для админки раздела это будет выглядеть так
/* All the admin routes will go under Admin namespace */
/* All the admin routes will required authentication,
so an middleware auth also applied in admin namespace */
Route::group(['namespace' => 'Admin'], function () {
Route::group(['middleware' => ['auth']], function() {
Route::get('/', ['as' => 'home', 'uses' => 'DashboardController@index']);
});
});
Надеюсь, это поможет!!

24.04.2017 05:25:40
Если вы используете Laravel 5.3 или выше, нет необходимости вдаваться в такие сложные вопросы, как другие ответы.
Просто используйте команду ремесленника по умолчанию для создания нового контроллера.
Например, если я хочу создать User
контроллер в User
В маршруте,
php artisan make:controller User/User
делать это было бы прекрасно, и теперь на localhost / dashboard находится страница, на которой находится страница.
Надеюсь, это поможет.

28.04.2017 10:41:34
Для Laravel 5.3 выше:
php artisan make:controller test/TestController
Это создаст test
папку, если она не существует, а затем создает TestController
внутри.
TestController
будет выглядеть так:
<?php
namespace App\Http\Controllers\test;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class TestController extends Controller
{
public function getTest()
{
return "Yes";
}
}
Затем вы можете зарегистрировать свой маршрут следующим образом:
Route::get('/test','test\TestController@getTest');


php artisan make:controller test\TestController
создает testTestController.php тогда php artisan make:controller 'test\TestController'
работает. (Обратите внимание на цитаты) - Laravel 5.4

php artisan make:controller test/TestController

21.02.2018 03:26:05
В Laravel 5.6, предполагая, что имя вашей подпапки ' является Api
:
В вашем контроллере вам нужны эти две линии:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
И в вашем файле маршрута api.php
, вам нужно:
Route::resource('/myapi', 'Api\MyController');

03.01.2019 01:51:39
Именно так вы можете организовать свое приложение:
Каждый файл (web.php
, api.php
...) объявляется в map()
, в файле
\app\Providers\RouteServiceProvider.php
При отображении файла маршрута вы можете задать ->namespace($this->namespace)
, вы увидите его там среди примеров.
Это означает, что вы можете создавать больше файлов, чтобы сделать ваш проект более структурированным!
И установите различные пространства имен для каждого из них.
Но я предпочитаю установить empty string
для пространства имен ""
Это дает вам возможность настроить ваши контроллеры на rout в собственном php пути, смотрите пример:
Route::resource('/users', UserController::class);
Route::get('/agents', [AgentController::class, 'list'])->name('agents.list');
Теперь вы можете дважды щелкнуть имена контроллеров в IDE, чтобы быстро и удобно добраться туда.

25.08.2019 08:34:52
Недавно у меня была эта проблема с laravel 5.8, но я недооцениваю и должен правильно определить контроллер, как показано ниже:
php artisan make:controller SubFolder\MyController // true
Не так, как сейчас.:
php artisan make:controller SubFolder/MyController // false
Затем вы можете получить доступ к контроллеру в routes / web.php как это:
Route::get('/my', 'SubFolder\MyController@index');