laravel blade包含错误 - 语法错误,意外

Pet*_*ven 6 php laravel blade

我在本地使用Laravel 4和EasyPHP 14.1.我创建了一条路线:

Route::get('/test', function()
{
    return View::make('test');
});
Run Code Online (Sandbox Code Playgroud)

布局(testlayout.blade.php):

<!doctype html>
<html>
<head>
    <title></title>
</head>
<body>
    <div class="container">
        @yield('container')
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

和一个视图(test.blade.php):

@extends("testlayout")
@section('container')
    <h1>Hello!</h1>
@stop
Run Code Online (Sandbox Code Playgroud)

它工作正常,我得到"你好!"

但是当通过添加这样的包含来改变我的布局时:

<!doctype html>
<html>
<head>
    <title></title>
</head>
<body>
    <div class="container">
        @yield('container')
    </div>
        @include('testfooter')
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

用我的页脚(testfooter.blade.php):

@section("testfooter")
    <div class="footer">2013-2014</div>
@show
Run Code Online (Sandbox Code Playgroud)

我有一个错误"语法错误,意外'/'".

Laravel生成的代码(在app\storage\views中找到)是错误的:

<!doctype html>
<html>
<head>
    <title></title>
</head>
<body>
    <div class="container">
        <?php echo $__env->yieldContent('container')
    </div>
        <?php echo $__env->make('testfooter', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>; ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Laravel忘记;?>之后yieldContent('container')并增加了两个;?>... render().我尝试了很多东西,但我现在真的没有任何线索.

UPDATE1我重新安装了一个新鲜的Laravel和客人什么,问题仍然是一样的.如果没有@include就可以了,使用@include我会一次又一次地出现同样的错误.

UPDATE2和PROBLEM FIXED(感谢@majimboo)!这简直令人难以置信.所有这些故事都与代码无关.这是文本编辑器的问题:Windows上的Notepad ++.由于未知原因,仅针对某些文件,它从"编辑/ EOL转换/ Windows格式"切换为"编辑/ EOL转换/ Mac格式".显然,Laravel根本不是Mac格式!因此,如果您在Windows上使用Notepad ++,请确保您具有:' EOL转换/ Windows格式 '

maj*_*rif 4

问题出在包含的文件中。

首先检查问题是否确实如此,删除里面的所有内容testfooter.blade.php,然后从浏览器打开视图。您会发现不再有错误了。

将您的更改testfooter.blade.php为:

<div class="footer">2013-2014</div>
Run Code Online (Sandbox Code Playgroud)

去除@section("testfooter")... @show

例子:

<!-- app/views/header.blade.php -->

<h1>When does the Narwhal bacon?</h1>

<!-- app/views/footer.blade.php -->

<small>Information provided based on research as of 3rd May '13.</small>
Run Code Online (Sandbox Code Playgroud)

你可以像这样包含它:

<!-- app/views/example.blade.php -->

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Narwhals</title>
</head>
<body>
    @include('header')
    <p>Why, the Narhwal surely bacons at midnight, my good sir!</p>
    @include('footer')
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

检查此内容以了解有关刀片的更多信息。


这个问题似乎是别的问题,我只是想分享一下,如果它可以帮助你:

我使用 Notepad++ 作为文本编辑器,出于某种奇怪的原因,它决定使用“MAC 格式”作为行尾 (EOL) 格式。显然 Blade 框架无法应对这一点。使用转换功能(在记事本++中:编辑 -> EOL 转换)转换为 Windows 格式,它会正常工作......

阿尔詹