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

时间:2014-04-17 06:00:04

标签: php laravel blade

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

Route::get('/test', function()
{
    return View::make('test');
});

布局(testlayout.blade.php):

<!doctype html>
<html>
<head>
    <title></title>
</head>
<body>
    <div class="container">
        @yield('container')
    </div>
</body>
</html>

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

@extends("testlayout")
@section('container')
    <h1>Hello!</h1>
@stop

它工作正常,我得到了#34;你好!&#34;

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

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

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

@section("testfooter")
    <div class="footer">2013-2014</div>
@show

我有错误&#34;语法错误,意外&#39; /&#39;&#34;。

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>

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

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

UPDATE2和问题修复(感谢@majimboo)! 这简直令人难以置信。 所有故事都与代码无关。这是文本编辑器的问题:Windows上的Notepad ++ 。由于未知原因,仅针对某些文件,它已从&#39;编辑/ EOL转换/窗口格式转换为&#39;编辑/ EOL转换/ Mac格式&#39;。显然,Laravel完全没有Mac格式!因此,如果您在Windows上使用Notepad ++,请确保您拥有:&#39; EOL转换/ Windows格式&#39;

4 个答案:

答案 0 :(得分:4)

问题出在包含的文件中。

首先检查问题是否真的如此,删除testfooter.blade.php内的所有内容,然后从浏览器打开视图。您会注意到没有错误。

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

<div class="footer">2013-2014</div>

删除@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>

您可以将其包括在内:

<!-- 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>

检查this以了解有关刀片的更多信息。


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

  

我使用Notepad ++作为文本编辑器,并且有一些奇怪的原因   决定使用&#34; MAC格式&#34;作为行尾(EOL)格式。   显然,Blade框架无法应对这种情况。使用   转换函数(在记事本++:编辑 - &gt; EOL转换中)进行转换   到Windows格式,它将正常工作......

     

Arjen

答案 1 :(得分:1)

你有这个:

@section("testfooter")
    <div class="footer">2013-2014</div>
@show // <--

将其更改为:

@section("testfooter")
    <div class="footer">2013-2014</div>
@stop // <--

答案 2 :(得分:0)

通常Laravel会给出一个很好的暗示。问题可能出在CSS或JS include语句中。首先确保您已打开laravel的调试模式。这是怎么做的。

  1. 配置/应用 - &gt;第16行的debug = true
  2. 刷新错误所在的页面
  3. 我故意不让关闭&#39;)&#39;的css文件。 laravel FW显示了该错误的位置,它会显示类似的错误。

    希望有所帮助。

答案 3 :(得分:0)

在我的情况下,问题是一些PHP中的未终止字符串,与Laravel抱怨的文件完全不同。我通过删除文件中的所有内容并逐个添加行来消除它。