106

私はLaravelが初めてです。アプリを整理しておくために、コントローラーをコントローラーフォルダーのサブフォルダーに入れたいと思います。

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

コントローラーにルーティングしようとしましたが、laravel が見つかりません。

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

私は何を間違っていますか?

4

15 に答える 15

74

コントローラーをフォルダーに追加します。

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

フォルダーを指定せずにルートを作成します。

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

走る

composer dump-autoload

そしてさらに試みる

于 2013-09-17T13:07:26.987 に答える
51

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 または artisan ダンプを実行しないでください。

composer dump-autoload

また

php artisan dump
于 2014-11-15T07:23:15.800 に答える
19

** Laravel 5 または Laravel 5.1 LTS の両方 ** の場合、Admin フォルダーに複数のコントローラーがある場合は、Route::group非常に役立ちます。例えば:

更新:Laravel 5.4で動作

私のフォルダ構造:

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

PostAPI コントローラ:

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

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

class PostApiController extends Controller {  
...

My 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']);

    });

サブフォルダーを作成するための移動の詳細については、このリンクにアクセスしてください。

于 2015-05-24T02:20:23.227 に答える
9

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」が表示されます。

ps: 私の下手な英語は無視してください

于 2014-03-26T07:12:59.267 に答える
6

それを行う方法を見つけました:

/app/start/global.php にパスを追加するだけです

ClassLoader::addDirectories(array(

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

));
于 2013-09-17T13:19:18.197 に答える
5

Laravel 4.2 を使用しています。ここで私はそれを行う方法:
私はこのようなディレクトリ構造を持っています:
app
--controllers
----admin
------AdminController.php

コントローラーを作成したら、新しい管理ディレクトリへのパスを composer.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

次に、routes.php に次のようにコントローラーを含めます。

Route::controller('admin', 'AdminController');

そして、すべてがうまくいきます。

于 2014-06-07T12:49:48.980 に答える
5

Laravel 5.3以降を使用している場合、他の回答が言っているように複雑にする必要はありません。デフォルトの artisan コマンドを使用して、新しいコントローラーを生成するだけです。たとえば、フォルダーにUserコントローラーを作成したい場合。User私はタイプします

php artisan make:controller User/User

ルートでは、

Route::get('/dashboard', 'User\User@dashboard');

これだけで問題なく、現在は localhost/dashboard にページが存在します。

お役に立てれば。

于 2017-04-24T02:25:40.737 に答える