【问题标题】:Laravel blade template not workingLaravel 刀片模板不起作用
【发布时间】:2014-11-15 02:16:53
【问题描述】:

我之前开发过 Laravel 项目,但不知何故我无法解决 Blade 问题。我的@section 和@include 都由于某种原因都不起作用。这是我的文件:

composer.json

{
"name": "educo/laraecom",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
    "laravel/framework": "4.1.*",
    "laravelbook/ardent" : "2.*"
},
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},
"scripts": {
    "post-install-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ]
},
"config": {
    "preferred-install": "dist"
},
"minimum-stability": "stable"
}

视图/布局/index.blade.php

<!DOCTYPE html>
<html>
<head>
<title>Sports Gears</title>

{{HTML::style(asset("/public/css/common"))}}
{{HTML::style(asset("/public/css/jRating.jquery"))}}
{{HTML::style(asset("/public/css/cart"))}}
{{HTML::style(asset("/public/css/bootstrap.min"))}}
{{HTML::style(asset("/public/css/font-awesome"))}}
{{HTML::style(asset("/public/css/jquery.raty"))}}
{{HTML::style(asset("/public/css/homestyle.css"))}}

{{HTML::script(asset('/public/js/jquery'))}}
{{HTML::script(asset('/public/js/jquery-ui.min'))}}
{{HTML::script(asset('/public/js/jquery.ui.autocomplete.min'))}}
{{HTML::script(asset('/public/js/jquery.raty'))}}
{{HTML::script(asset('/public/js/common'))}}
{{HTML::script(asset('/public/js/cart'))}}

</head>
<body>

<div class="header">
   @include('sub.header')
</div>

<div class="container">
    @yield('content')
</div>

<div class="footercontainer">
    @include('sub.footer')
</div>

</body>
</html>

views/sub/header.blade.php

some menu based html goes here

views/sub/footer.blade.php

some plain html content goes here

app/routes.php

Route::get('/', "StaticController@index");

app/controllers/StaticController.php

public function index(){

    return View::make('static.index');    
}

app/views/static/index.blade.php

@extends('layouts.index')

@section('content')

{{HTML::style(asset("/public/css/jquery-ui.css", "stylesheet"))}}
{{HTML::style(asset("/public/css/jquery.autocomplete.css", "stylesheet"))}}

{{HTML::script(asset('/public/js/bootstrap.min'))}}
{{HTML::script(asset('/public/js/jquery.flexslider-min.js'))}}

<div class="clear"></div>
<div class="row">
<div class="content-box">
    <div class="col-lg-12" style="height:370px">
        <div class="col-lg-9 col-xs-12">
            @include('sub.slider')
        </div>
    </div>
    <div class="offerbar col-lg-12">

        <div class="deal-heading col-lg-12">
            <div class="col-lg-4">
                <div class="divider" style="float: right;"></div>
            </div>
            <div class="col-lg-4">
                <p>GET BEST DEAL</p>
            </div>
            <div class="col-lg-4">
                <div class="divider" style="float: left;"></div>
            </div>
        </div>
    </div>
</div>

@stop

app/views/sub/slider.blade.php

<div class="slider">

<div class="flexslider">
    <ul class="slides">
        <?php
        if (!$mainBanners->isEmpty()) {

            foreach ($mainBanners as $banner) {

                $filename = $banner->savedfilename;
                $url = $banner->url;
        ?>
                <li><a href="{{$url}}">{{HTML::image(asset("/public/banners/" . $filename))}}</a></li>
        <?php
            }
        }
        ?>
    </ul>
</div>
</div>

现在当我像这样在服务器上运行 url 时:http://localhost/laraecom 我得到一个空白页。当我检查源 html 时,我得到了这样的东西

<link media="all" type="text/css" rel="stylesheet" href="https://localhost/laraecom/public/css/jquery-ui.css">
<link media="all" type="text/css" rel="stylesheet" href="https://localhost/laraecom/public/css/jquery.autocomplete.css">

<script src="http://localhost/laraecom/public/js/bootstrap.min"></script>
<script src="http://localhost/laraecom/public/js/jquery.flexslider-min.js"></script>

<div class="clear"></div>
<div class="row">
<div class="content-box">
    <div class="col-lg-12" style="height:370px">
        <div class="col-lg-9 col-xs-12">
            <div class="slider">

<div class="flexslider">
    <ul class="slides">

这意味着我的 @section@include 都无法正常工作

【问题讨论】:

  • 你打开调试了吗?
  • 你有sub.slider.blade.php
  • 我在这里没有看到任何错误。您是否尝试在 static/index 其他更简单的文件中扩展,例如 aaa @yield('content') bbb 如果没有,您应该确定扩展或主刀片文件中的内容是否存在问题
  • 不知道你的问题能不能解决,但是你需要把app/views/static/index.blade.php文件中最后一个@stop去掉
  • 您也可以粘贴您的 sub.slider 吗?

标签: laravel blade


【解决方案1】:

我写这篇文章时不是专家,但我已经看过你的代码好几次了

查看引用的内容,我可以看到它确实包含您的所有文件并按要求生成内容,但是我可以看到它导致问题的部分在这里

<?php
        if (!$mainBanners->isEmpty()) {

            foreach ($mainBanners as $banner) {

                $filename = $banner->savedfilename;
                $url = $banner->url;
        ?>
                <li><a href="{{$url}}">{{HTML::image(asset("/public/banners/" . $filename))}}</a></li>
        <?php
            }
        }
        ?>

按照您的代码,我可以看到它正在提取所有正确的文件及其内容,但根据您从浏览器输出中提供的示例,它就在此 PHP 代码之前。

我不知道它是从哪里得到这些信息的,但是试着把它去掉导致问题。

我不知道 if 语句的用途或它的信息来自哪里,所以我无法定义它的输出应该是什么......

您也可以尝试 PHP 转储 $mainBanner 以查看该变量中是否有任何内容。?

或者为了进一步的帮助,您可以粘贴您从哪里传递此信息的示例以及共享浏览器更完整的输出?

【讨论】:

    【解决方案2】:

    app/views/static/index.blade.php 文件末尾有两个 @stop,删除一个即可。 p>

    【讨论】:

    • 谢谢 marcanuy,那是一个错字。我只有一个@stop。它必须对 composer.json 中缺少的任何条目做任何事情。虽然我有其他类似设置的项目
    • 它不会改变我的想法。我用 2 @stop 对其进行了测试,表现相同
    猜你喜欢
    • 2016-03-11
    • 2013-06-04
    • 1970-01-01
    • 2013-02-03
    • 2018-05-28
    • 2019-01-31
    • 2017-07-31
    • 2019-06-26
    • 2019-05-15
    相关资源
    最近更新 更多