web-dev-qa-db-ja.com

Laravel 5のサブフォルダー内のコントローラーにルーティングする

これは私のroutes.phpです:

Route::get('/', 'Panel\PanelController@index');

これは私のフォルダです:

Http/
....Controllers/
................Panel/
....................../PanelController.php

これは私のコントローラーです:

namespace App\Http\Controllers;

class PanelController extends Controller {

/* some code here... */

}

これは私が得るものです:

Class App\Http\Controllers\Panel\PanelController does not exist

「composerdump-autoload」コマンドを試しましたが、まだ機能しません。

9
Olivier Zoletti

クラスの名前空間は、ディレクトリ構造と一致する必要があります。この場合、クラスを調整してPanelを追加する必要があります

namespace App\Http\Controllers\Panel;
//                             ^^^^^

use App\Http\Controllers\Controller;

class PanelController extends Controller {

/* some code here... */

}
20
lukasgeiter

3つの簡単な手順に従ってください

  1. 名前空間にフォルダ名を追加します

    namespace App\Http\Controllers\Panel;
    
  2. 「useApp\Http\Controllers\Controller;」を追加します。クラス定義の前にコントローラーに

    namespace App\Http\Controllers\Panel;
    use App\Http\Controllers\Controller;
    
  3. 任意のルートでコントローラーを呼び出すときに、追加されたフォルダー名を追加します

    Route::get('foo','Panel\PanelController@anyaction');
    

「composerdump-autoload」を実行する必要はありません

7
alex t

次のような簡単なサブフォルダーを使用してコントローラーを生成できます。

php artisan make:controller Panel\PanelController

ディレクトリを使用して適切な名前空間とファイルを自動的に作成します。そして、前述のようにルートで参照します。

Route::get('/some','Panel\PanelControllder@yourAction');

ハッピーコーディング!

1
Mikhail.root