2016-10-19 47 views
0

我試圖在laravel 5.2.*中添加包,但打包路由返回錯誤Class FormController does not exist爲什麼包路由不加載控制器類?

我試圖

Package Directory > packages\js\form\src

包>提供商

namespace Js\Form; 
use Illuminate\Support\ServiceProvider; 
class FormServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
    } 

    public function register() 
    { 
     include __DIR__.'/routes.php'; 
     $this->app->make('Js\Form\FormController'); 
    } 
} 

包>控制器

namespace Js\Form; 
use App\Http\Controllers\Controller; 
use Carbon\Carbon; 
class FormController extends Controller 
{ 
    public function index() 
    { 
     echo 'test'; 
    } 
} 

包裝>作曲

{ 
    "name": "js/form", 
    "description": "this is form", 
    "type": "project", 
    "license": "xyz", 
    "minimum-stability": "dev", 
    "require": {} 
} 

主作曲

"autoload": { 
     "classmap": [ 
      "database" 
     ], 
     "psr-4": { 
      "App\\": "app/", 
      "Js\\Form\\": "packages/Js/Form/src" 
     } 
    } 

包裝>路線

Route::get('/contactus', '[email protected]');

在配置/ app.php

Js\Form\FormServiceProvider::class,

我執行該命令還composer dump-autoload然後試圖打開這個網址http://localhost/project/public/index.php/contactus但其表現以下錯誤。

Class FormController does not exist

任何人都可以指導我在哪裏的問題,我可以修復它。我想感謝,如果有人指導我。謝謝

+0

我假設的錯誤來自於路由器功能。你只是指定FormController,所以它會查找該(app/http/controllers)的默認位置,但這不是表單控制器的地方 – tam5

+0

@tam我同意你,問題來自路由,因爲我檢查它添加錯誤控制器名稱。所以我該如何修復。你有什麼主意嗎 ? –

+0

你可以嘗試這個命令 php artisan config:在CLI中清除。有時發生它需要緩存中的配置。 –

回答

2

誤差來源於此行:

Route::get('/contactus', '[email protected]'); 

默認情況下,路由器尋找相對App\Http\Controllers控制器,但不是在您的FormController是。

爲了解決這個問題,你就需要指定的FormController相對App\Http\Controllers,或通過提供絕對路徑。

例如,如果您FormController被命名空間,App\FormController,你可以寫:

Route::get('/contactus', '\App\[email protected]'); 

所以,你的情況應該是:

Route::get('/contactus', '\Js\Form\[email protected]'); 
+0

哇令人驚歎的是,我遵循了答案和它的工作。非常感謝你+1 –

相關問題