0

次の構造に基づいて、Laravel 4 でネストされたコントローラーを取得しようとしています。

  • アプリ
    • コントローラー
      • ベース
        • BaseController.php
      • Webサイト
        • WebsiteController.php

BaseController を拡張する WebsiteController に関連付ける Web サイト ルートを取得したいと考えています。

私は次のことを試しました

route.php の場合 ( app/route.php )

Route::resource('website', 'Controllers\Website\WebsiteController');

BaseController.php の場合 ( app/controllers/base/BaseController.php )

use Illuminate\Routing\Controllers\Controller;
class BaseController extends Controller {

    protected function setupLayout(){
        if ( ! is_null($this->layout)){
            $this->layout = View::make($this->layout);
        }
    }
}

WebsiteController.php 用 ( app/controllers/website/WebsiteController.php )

use Controllers\Base\BaseController;
class WebsiteController extends BaseController {
    public function index(){
        return 'index';
    }
}

残念ながら、http://mywebsite.com/websiteにアクセスしてもまったく機能しません。

ありがとうございました。

4

1 に答える 1

1

エラー ダンプがなければ、確かなことはわかりませんが、次のことを試すことができます。

1) composer の dump-autoload を実行して、オートローダーが新しいクラスを認識できるようにします。

$ php composer.phar dump-autoload

use Controllers\Base\BaseController2)モデルディレクトリはデフォルトで自動ロードされるため、ディレクティブを使用する必要はないと思います。コントローラーの名前空間を異なる方法で設定していないため、useディレクティブは必要ありません。上記の「dump-autoload」でうまくいくはずです

3) dump-autoload 後、変更

Route::resource('website', 'Controllers\Website\WebsiteController');

これに:

Route::resource('website', 'WebsiteController');

新しいコントローラーに別の名前空間を定義しない限り、特定のクラス (たとえば、'Controllers\Website\WebsiteController') を使用する必要はありません。

于 2013-02-03T17:38:26.040 に答える