2014-01-22 80 views
0

我有一个控制器:Laravel 4 - 级分辨率不工作

<?php namespace controllers; 

class XController extends \BaseController { 
    public function loadHome() { 
     $view = new \views\XView; 
     $html = $view->Build(); 
     return $html; 
    } 
} 

和一个视图

<?php namespace views; 

class XView{ 

    public function Build() 
    { 
     return "oi oi"; 
    } 
} 
?> 

而且,我已经在我的global.php加入这一行,我的类加载器

app_path().'/views', 

并试过

composer dump-autoload 

它只是不断给我

Class 'views\XView' not found 

任何想法?

P.S.我故意不使用Blade。

回答

0

如果您不使用composer.json,Composer将无法提供帮助。所以,编辑您composer.json并添加视图文件夹到它:

"autoload": { 
    "classmap": [ 
     ... 
     "views" 
    ], 
}, 

然后你做

composer dump-autoload 

,并检查文件

vendor/composer/autoload_classmap.php 

你的类必须出现在那里,否则它不会工作。

+0

谢谢你,那是做的。 你能不能告诉我什么作曲家dump-autoload呢?如果我不得不手动将文件添加到composer.json,它的用途是什么? – nchaud

+0

你正在添加文件或目录吗? 'composer dump-autoload'扫描搜索类的所有可配置文件夹,以创建自动加载文件。这就是它们出现在autoload_classmap.php中的原因。 Laravel使用'vendor/autoload.php',它可以帮助PHP找到应用程序需要的类文件。否则,你将不得不“需要”所有这些类文件。 –

+0

好的,谢谢你 - 我有一个监听周围的供应商/ * 除了政治正确性,你个人认为这个作曲家业务?这似乎太过矫枉过正。如果我有松散耦合的代码,我通常只需要每个控制器/模型/视图需要2-3个文件,那么为什么这么麻烦。 – nchaud