【问题标题】:Laravel variables echo'd in view above HTML tagLaravel 变量在 HTML 标记上方的视图中回显
【发布时间】:2014-05-24 03:25:38
【问题描述】:

我正在使用 Laravel 并将一些变量传递给视图以使用刀片语法将它们回显,如下所示:

@extends('masterLayout')

@section('content')
    @foreach($products $product)
        <p>{{ $product->name}}</p>
    @endforeach @stop
@end

masterLayout.blade.php 文件中是页面布局,带有&lt;html&gt;&lt;head&gt;&lt;body&gt; 标签。问题是,当这些变量被传递给视图并被回显时,它们并没有被放在它们应该在的页面中。所有回显的数据都放置在 HTML 标记上方的页面顶部,就好像我在控制器中而不是在视图中回显它一样。在 Laravel 中是否有可以更改的设置或其他方式来实现这一点?

编辑:好的,这是视图的完整代码。实际上有 3 个,inventory、inventoryLayout 和 masterLayout。我已经注释掉了控制器中的 return View::make() 并且它消失了,所以我绝对不会在视图本身之外的任何地方回显它。感谢您的帮助!

master.blade.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>AppName</title>

    <link rel="stylesheet" href="../assets/css/frontend.css">
</head>
<body>
<header class="navbar navbar-inverse navbar-fixed-top bs-docs-nav" role="banner">

  <nav id='top-nav'>
    <div class="centered-wrapper">
        <ul>
            <li><?php echo link_to('/login',"Login");?></li>
            <li><?php echo link_to('/admin',"Admin");?></li>
            <li><?php echo link_to('/inventory',"Inventory");?></li>
            <li><?php echo link_to('/dashboard',"Dashboard");?></li>
            <li><?php echo link_to('/recipes',"Recipes");?></li>
            <li><?php echo link_to('/shopping_list',"Shopping List");?></li>
        </ul>
    </div>
</nav>
</header>
    <div id="container">
        @yield('content')
    </div><!-- end container -->
</body>
</html>

inventoryLayout.blade.php

@extends('layouts.master')

<h1>My Inventory</h1>

@yield('inventoryItems')

inventory.blade.php

@extends('inventoryLayout')

@section('inventoryItems')
    @foreach($products as $product)
        <p>{{{ $product->name }}}</p>
    @endforeach
@stop

【问题讨论】:

  • 可能值得您发布 masterLayout 的内容以便我们查看。我注意到您上面的代码在 foreach 之后有一个偷偷摸摸的 @stop 和一个 @end(我认为这在 Blade 中没有任何作用)。

标签: php laravel laravel-4 blade


【解决方案1】:

我自己想出来的。我包括了一个名为“内容”的部分,但实际上从未在子视图中创建该部分,因此不是将该部分放在页面中,而是将其放在页面上方。这解决了它

inventoryLayout.blade.php

@extends('layouts.master')

@section('content');
<h1>My Inventory</h1>

@yield('inventoryItems')
@stop

【讨论】:

    【解决方案2】:
    1. @foreach($products $product) 应该是 @foreach($products as $product)
    2. 尝试注释掉控制器中返回视图的行。如果页面没有变白,则表明您正在从控制器中回显某些内容。
    3. 尝试在控制器中搜索varcharprint_rechodd
    4. 您的主布局中有什么?

    【讨论】:

    • 我只是把涉及到的三个视图的代码放上来。 foreach 只是一个复制/粘贴错误,任何地方都没有 print_r 或 echo,而且它肯定只在视图中回显
    • 知道了,我在下面回答了
    猜你喜欢
    • 2016-01-02
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2018-11-14
    • 2018-06-10
    相关资源
    最近更新 更多