4

Laravel 4のサブフォルダ内にネストされたコントロールを呼び出すことは可能ですか?

私のコントローラーは次のとおりです

- Controllers
    - admin
        * AdminController.php
* HomeController.php
* BaseController.php
* ArticleController.php

以下は、私の AdminController クラスのコードです。

<?php

class LoginController extends BaseController {

    public function showLogin() 
    {
    return View::make('partials.admin.login');
    }
}

私の Routes.php ファイルでは、次のことを行っています。

Route::get('/admin', 'admin.LoginController@showLogin');

しかし、クラスが見つからないというエラーが発生します。Laravel 4のドキュメントからこの問題を解決する方法が見つからないように見えるので、私が見逃しているものはありますか?

4

5 に答える 5

10

namespaceファイルに追加してAdminController.php、クラスの名前を から に変更LoginControllerするだけです。AdminController

AdminController.phpは次のようになります。

<?php

    namespace Admin;
    use BaseController;

    class LoginController extends BaseController {

        public function showLogin() 
        {
        return View::make('partials.admin.login');
        }
    }

に変更routes.phpします:

Route::get('/admin', 'admin\LoginController@showLogin');
于 2013-09-13T18:24:07.907 に答える
4

管理コントローラをコントローラ ディレクトリ app/controllers/admin のサブディレクトリに保存すると、問題が発生しました。

このディレクトリを composer.json ファイルのオートロード クラスマップのリストに追加する必要がありました。その後、composer dump-autoload を実行します。

于 2013-07-10T21:58:05.197 に答える
2

「app/controllers」に末尾のスラッシュを追加するとcomposer.jsonうまくいきました:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers/",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},

次に実行しますcomposer dump-autoload

于 2013-11-03T22:03:30.603 に答える
0

手遅れかもしれませんが、可能な方法の 1 つは名前空間を使用することです。ここに私のサンプルがあります: routes.php :

Route::group(array('prefix' => 'admin' , 'before' => 'admin' ), function()
{
Route::controller('contacts' , '\backend\ContactController');
...
}

バックエンドコントローラーの上に、次の行を追加します。

namespace backend;
use \view as view;

また、これらの行を composers.json の classmap ディレクティブに追加します。

"app/controllers/backend",
 "app/controllers/front",
于 2015-01-23T11:43:12.797 に答える