[laravel] Laravel 컨트롤러 하위 폴더 라우팅

저는 Laravel을 처음 사용합니다. 내 앱을 정리하고 유지하기 위해 컨트롤러를 컨트롤러 폴더의 하위 폴더에 넣고 싶습니다.

controllers\
---- folder1
---- folder2

컨트롤러로 라우팅하려고했지만 laravel이 찾지 못했습니다.

Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');

내가 도대체 ​​뭘 잘못하고있는 겁니까?



답변

위의 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');


답변

폴더에 컨트롤러를 추가합니다.

controllers\
---- folder1
---- folder2

폴더를 지정하지 않고 경로를 만듭니다.

Route::get('/product/dashboard', 'MakeDashboardController@showDashboard');

운영

composer dump-autoload

그리고 다시 시도하십시오


답변

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


답변

** Laravel 5 또는 Laravel 5.1 LTS의 경우 **, Admin 폴더에 여러 컨트롤러 Route::group가있는 경우 정말 도움이 될 것입니다. 예를 들면 :

업데이트 : Laravel 5.4에서 작동

내 폴더 구조 :

Http
----Controllers
    ----Api
          ----V1
                 PostsApiController.php
                 CommentsApiController.php
    PostsController.php

PostAPIController :

<?php namespace App\Http\Controllers\Api\V1;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class PostApiController extends Controller {
...

내 Route.php에서 namespace그룹을 Api\V1다음과 같이 설정했습니다.

Route::group(
        [
            'namespace' => 'Api\V1',
            'prefix' => 'v1',
        ], function(){

            Route::get('posts', ['uses'=>'PostsApiController@index']);
            Route::get('posts/{id}', ['uses'=>'PostssAPIController@show']);

    });

하위 폴더를 만들기위한 이동에 대한 자세한 내용은이 링크를 참조하십시오 .


답변

1. 다음과 같이 하위 폴더를 만듭니다.

app
----controllers
--------admin
--------home

2. app / routes.php에서 코드 구성

<?php
// index
Route::get('/', 'Home\HomeController@index');

// admin/test
Route::group(
    array('prefix' => 'admin'),
    function() {
        Route::get('test', 'Admin\IndexController@index');
    }
);
?>

3. app / controllers / admin / IndexController.php에 sth를 작성합니다. 예 :

<?php
namespace Admin;

class IndexController extends \BaseController {

    public function index()
    {
        return "admin.home";
    }
}
?>

4. 사이트에 액세스합니다. 예 : localhost / admin / test 페이지에 “admin.home”이 표시됩니다.

추신 : 내 가난한 영어를 무시하십시오


답변

방법을 찾았습니다.

/app/start/global.php에 경로를 추가하기 만하면됩니다.

ClassLoader::addDirectories(array(

    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/controllers/product',
    app_path().'/models',
    app_path().'/database/seeds',

));


답변

php artisan make:controller admin/CategoryController

여기서 admin은 app / Http / Controllers 아래의 하위 디렉토리이고 CategoryController는 디렉토리 내에 생성하려는 컨트롤러입니다.