2014-09-11 117 views
0

我有一個控制器,它可以完美的子文件夾:Laravel 4投入子目錄控制器 - 沒有找到

路線:

Route::resource('json/stock/equipmentImages', 'Stock_EquipmentImageController'); 

從控制器/股獲得同級車/ EquipmentImageController.php 這有一個類定義:

class Stock_EquipmentImageController extends \BaseController { 

最奇怪的事情發生,如果我做同樣的:

Route::resource('json/stock/equipmentLocations', 'Stock_EquipmentLocationController') 

然後我得到消息,找不到類。

如果我從控制器/股票/ EquipmentLocationController.php類移動到 控制器/ EquipmentLocationController.php和調整路線:

Route::resource('json/stock/equipmentLocations', 'EquipmentLocationController'); 

一切正常。這發生在沒有命令行訪問的共享服務器上。在我的本地主機上,所有控制器都可以放入子文件夾中。

+0

這可能是由命名空間造成的? 'EquipmentLocationController'的命名空間是什麼? – egig 2014-09-11 04:55:52

+0

命名空間和控制器命名可能是一個問題,但聽起來主要的問題可能是由於Linux服務器與本地計算機相比區分大小寫。 – 2014-09-11 15:28:08

回答

0

我沒有使用在我的本地主機上正常工作的命名空間,但在我的公共服務器上發出了問題。命名空間DID解決了egig所提出的問題。謝謝。

下面是我做什麼,如果別人也有類似的問題:

我通過這個漂亮的教程去:https://www.youtube.com/watch?v=yAzd7Ig1Wgg 來熟悉命名空間,因爲這是相對較新,我在Laravel 4

路由器設置(資源路由器):

Route::resource('json/stock/equipment', 'App\Controllers\Stock\EquipmentController'); 

添加了PSR 0設置自動加載:(而不是使用類映射)之類的視頻顯示。

, 
    "psr-0": { 
     "Stock": "app/controllers/" 
    } .... 

沒有對basecontroller(不加區分的描述)添加任何東西:

class BaseController extends Controller { 

    public function __construct(){ .... 

添加命名空間和依賴於我的子控制器(控制器\股票):

namespace App\Controllers\Stock; 
use BaseController, Form, Input, Redirect, View, Equipment, Response; 

class EquipmentController extends BaseController { .... 

然後將我的模型放置在子文件夾(models \ stock)中,沒有命名空間描述。

class Equipment extends \Eloquent { 


protected $fillable = [ 

       'description', 
       'location', 
.... 

然後我做了「PHP的工匠轉儲自動加載」,並上傳一切我的公共服務器,相應的修改數據庫和公共文件夾的設置,因爲它們是不同的。一切正常!

歡迎反饋,感謝支持!