2015-11-01 46 views
2

我是Laravel的新成员。我阅读文档和谷歌搜索,但我无法找到我的问题的答案。Laravel 5 - 控制器无法正常工作的视图('test')

我试图渲染一个简单的视图test.blade.php(位于资源/视图)。

一)第一次尝试: 在app/HTTP/routes.php文件我写

Route::get('/', function(){ 
    return view('test'); 
}); 

它的工作。欢呼!我看到我的简单的网站

二)第二次尝试: 在app/HTTP/routes.php文件我写

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

我已经在app/HTTP /控制器 创建控制器WelcomeController.php内部控制我写道:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class WelcomeController extends Controller 
{ 
    public function index() 
    { 
     return view('test'); 
    } 
} 

而....这是行不通的,我只看到空白页。 好吧,我正在挖掘和挖掘,并试图了解问题是什么。我改变了retun视图('test')返回view() - > make('test');但它不工作 - 它只生成空白页... ...

然后我只是改变retun回声:回声视图('测试'); 它像魅力一样工作。

我在做什么错?在互联网上展示的所有例子返回视图(“..‘)不回视(’...”)(这是丑陋的)...

请帮我:)

+0

只用于测试尝试编写'dd(“test”);'返回'view('test')之前''看看屏幕上是否带有测试文本 –

+1

尝试激活调试模式并查看它是否返回特定错误,这可能是你的WelcomeController遇到类问题 –

+0

dd(“test”)在浏览器中产生“test”。 这是我的.env: APP_DEBUG =真 我已经改变了控制器名称为TestabcController(当然routes.php到新的控制器名称),这是行不通的 –

回答

0

另一种方法是路线定义使用数组

试试这个:

你也可以指定数组内的控制器和动作。

这里我们要说的路线使用指数函数内的WelcomeController

添加在routes.php文件

Route::get('/', [ 'uses' => '[email protected]' ]); 

希望这是有益。

+0

我一直在说OP这不是他在长时间聊天后工作的问题 –

1

经过几个小时的挖掘,我明白了!

我决定创建第二个项目,并使用composer在另一个目录中安装laravel。接下来,我打开了我用来比较这两个安装的伟大工具名称Meld。我注意到主控制器控制器存在一些差异。PHP的位于应用程序/ HTTP /控制器

在我的第一个安装(与问题)是:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 

abstract class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 

    public $auto_render = true; 

    /** 
    * Execute an action on the controller. 
    * 
    * @param string $method 
    * @param array $parameters 
    * @return \Symfony\Component\HttpFoundation\Response 
    */ 
    public function callAction($method, $parameters) 
    { 
     parent::callAction($method, $parameters); 
    }  
} 

而在第二个安装:

​​

我决定从删除callAction Controller.php因为它只调用父方法。然后我检查我的网页浏览器...和

Hurrrayy它的工作....返回视图(“测试”),它应该工作...

我认为,在以前的一些版本Laravel的此方法已添加,并在接下来有人删除它......但为什么它阻止渲染模板?

这是因为覆盖功能没有返回结果...... 当我改变了像这样的功能:

public function callAction($method, $parameters) 
{ 
    return parent::callAction($method, $parameters); 
} 

这是解决方案!现在一切都很好。

我想感谢大家,特别是maytham-mahiam和revo,感谢您的大力帮助。

+0

确实欢迎您 –

+0

up-vote。一个很好的摔角问题。 – revo