【问题标题】:Laravel Blade Layout View [layout.default] not foundLaravel Blade 布局视图 [layout.default] 未找到
【发布时间】:2014-03-10 19:19:42
【问题描述】:

我刚刚开始使用“Laravel”。但是代码 sn-ps 不起作用。

在我的 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');

为什么会显示这个错误?

我该如何解决?

【问题讨论】:

  • 您添加了@extends('layouts.default') 还是什么?我相信您的意思是“Blade”而不是“Baldey”。
  • 不知道是不是我糊涂了,但是你不会用“default.blade.php”代替“index.blade.php”
  • 我没有添加 @extends('layouts.default') ,我需要吗?但我现在已在 app->view->demo1 中将文件重命名为 default.blade.php,但仍然无法正常工作
  • 使用控制器布局是 Blade 中 @extends 的隐式版本 - 请参阅我的答案以获取更多详细信息。对 aks007 而言,也许您应该忽略控制器布局并使用 Blade 视图继承(在视图中显式 @extends)可能毫无价值,因为魔法稍微少了一点。

标签: php laravel laravel-4 blade


【解决方案1】:

当我阅读您的问题时,您实际上需要两个视图:

  1. 布局/default.blade.php
  2. demo1/index.blade.php

这就是为什么它说找不到视图 - 您已经创建了这两个视图中的第二个,并且您在控制器的操作中使用它,但是您似乎没有创建您所引用的布局视图在控制器中。

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

  • layout.default:
    • 标题(laravelpage)
    • 内容(demo1.index 视图的 HTML)
  • demo1.index
    • 姓名(Laravel 用户)
    • 年龄 (28)
    • 位置(达卡)

【讨论】:

  • 嗨,我也有这个问题..在浏览器中它只是打印 {{ $name }} 而在我的 laravel 应用程序中没有像“layout/default.blade.php”这样的文件是预加载的还是我们必须创建它?
  • 这可能值得您将其作为一个新问题发布,Hiren,您也可以包含相关代码 sn-ps,以便人们可以更好地帮助您。
【解决方案2】:

你是说刀片布局?

首先,在控制器中使用 index 方法名,而不是 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");

在您的视图文件夹(或子文件夹)中创建一个新视图(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}}

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

【讨论】:

  • 它没有解决显示另一个错误,您能否提供完整的工作代码并编辑您的答案?谢谢
  • 我不觉得这个答案实际上是在回答手头的问题。首先它开始讨论资源丰富的控制器和生成器包,然后它告诉 OP 撤消他们所做的一切并以其他方式从头开始,虽然这可能是开始学习的最佳方式,但实际上与他们所拥有的背道而驰并想达到。底部代码示例也不正确-控制器操作将在视图my_array 中提供一个变量,该变量具有两个键,而不是答案建议的两个变量。 (恕我直言不讳。)
猜你喜欢
  • 2021-07-06
  • 2021-03-25
  • 1970-01-01
  • 2014-03-20
  • 2023-03-23
  • 2015-05-01
  • 2015-08-28
  • 1970-01-01
  • 2021-07-26
相关资源
最近更新 更多