未找到Laravel Blade布局视图[layout.default]

时间:2014-02-12 12:45:45

标签: php laravel laravel-4 blade

我刚刚开始使用“Laravel”。但代码片段无效。

在我的DemoController.php

<?php class DemoController extends BaseController
{   
    public $restful = true;

    public $layout = 'layout.default';  

    public function get_index() 
    {       
        $this->layout->title = 'laravelpage';

        $View = View::make('demo1.index' , array(
            'name'=>'Laravel user',              
            'age'=>'28',            
            'location'=>'dhaka'));

        $this->layout->content = $View; 
    }
}

并在我的index.blade.php

<!doctype html>

<html lang="en">

    <head>

        <meta charset="UTF-8"> 

        <title>{{ $title }}</title>
    </head>
    <body>  

        {{ $content }}

    </body>
</html>

我的路线是:

Route::controller('demo1','DemoController');

为什么它会显示此错误? showing this error

我该如何解决?

2 个答案:

答案 0 :(得分:2)

在我阅读你的问题时,你实际上需要两个观点:

  1. 布局/ default.blade.php
  2. demo1的/ index.blade.php
  3. 这就是为什么它说无法找到视图 - 你已经创建了这两个视图中的第二个并且你在控制器的动作中使用它,但是你似乎没有创建你引用的布局视图在控制器中。

    此外,您实际上是在内部视图中尝试访问布局变量(titlecontent)而不是布局。每个视图可用的变量如下:

    • layout.default:
      • title(laravelpage)
      • content(demo1.index视图的HTML)
    • demo1.index
      • 名称(Laravel用户)
      • 年龄(28岁)
      • location(dhaka)

答案 1 :(得分:1)

你的意思是刀片布局?

首先,在控制器中仅使用索引方法名称而不是 get_index 。 其次,尝试使用资源丰富的控制器 - 从您的路线映射 你的域逻辑会更加清晰,你将获得整个资源。为此目的,使用了很棒的laravel generator package.

第三,我看到你的刀片变量和提供的数组之间没有任何联系?

使用生成器是可选的,这只是一种很好的做法。

更好的解决方案是:

public function index()
{

    $my_array ["title"=>"some_title","content"=>"some_content"];
    return View::make("my_view")->with("my_array",$my_array); 
    //or
    return View::make("my_view",compact("my_array"));
}

<强>更新

除了你的应用程序(权限,laravel版本......)中可能出错的其他内容之外,你需要遵循非常基本的模式才能使用:

使用以下命令创建新路线:

Route::get("demo1","DemoController@index");

在views文件夹(或子文件夹)中创建一个新视图(index.blade.php文件)。

创建一个新控制器:

class DemoController extends BaseController{

    public function index()
    {
        $my_array = ["title"=>"some_title","content"=>"some_content"];
        return View::make("index")->with("my_array",$my_array);

    }
}

在index.blade.php中你可以输入类似的内容:

{{$title}}
{{$content}}

现在转到浏览器,您应该在刷新后看到标题和内容。 我想你的服务器设置是正确的。