5

Laravel 4パッケージにコントローラーを入れたいのですが、ルーティングを機能させることができません。

Laravel 4のドキュメントのパッケージの説明に従い、routes.phpファイルを非コントローラールートで動作させました。

誰かがLaravel4でパッケージコントローラーを動作させる方法について教えてください。

前もって感謝します。

ラース

// EDIT:

// routes.php

   Route::get('admin', 'Package::AdminController@index'); // Does not work

   Route::get('admin', function(){  // Works fine
       return 'Dashboard';
   })
4

4 に答える 4

10

あなたの状況の詳細はわかりませんし、これがこの問題を解決するための「適切な」方法であるかどうかもわかりませんが、同じ問題に遭遇したので、解決方法を共有したいと思いました.

ディレクトリ構造が次のようになるように、パッケージ コントローラを controllers サブディレクトリに配置しました。

/src
    /Vendor
        /Package
            PackageServiceProvider.php
    /config
    /controllers
    /lang
    /migrations
    /views
/tests
/public

次に、コントローラー フォルダーをパッケージの composer.json autoload クラス マップに追加しました。

{
    "name": "kevin-s-perrine/my-first-packge",
    "description": "",
    "authors": [
        {
            "name": "Kevin S. Perrine",
            "email": "removed@somewhere.com"
        }
    ],
    "require": {
        "php": ">=5.3.0",
        "illuminate/support": "4.0.x"
    },
    "autoload": {
        "classmap": [
            "src/migrations",
            "src/controllers"
        ],
        "psr-0": {
            "KevinSPerrine\\MyFirstPackage": "src/"
        }
    },
    "minimum-stability": "dev"
}

最後にcomposer dump-autoload、パッケージのルート ディレクトリで実行し、ルート ファイルでコントローラーを名前で参照します。

Route::get('myfirstpackage', 'MyFirstPackageHomeController@getIndex');
于 2013-02-02T23:44:41.977 に答える
3

パッケージのサービス プロバイダーに、ルート ファイルを含めましたか? L4 がルート ファイルを自動的にロードするとは思えません。どこでもできますが、これが最も適切な場所だと思います。

public function register()
{
    $this->package('vendor/pkgname');
    require __DIR__.'/../routes.php';
}
于 2013-01-20T01:35:32.277 に答える
3

名前空間でもコントローラーを参照する必要があります

Route::get('/admin', 'PackageNS\Package\Controllers\AdminController@getIndex');

あるいは

Route::controller('PackageNS\Package\Controllers\AdminController', 'admin');
于 2013-02-03T16:31:41.037 に答える
-1

これやった:

composer dump-autoload

オートローダーは、これらのピカピカの新しいクラスについて通知する必要があります。また、Web サーバーのログでエラーを確認することをお勧めします。

于 2013-01-30T21:27:06.020 に答える