簡體   English   中英

laravel blade包含錯誤 - 語法錯誤,意外

[英]laravel blade include error - syntax error, unexpected

我在本地使用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

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

但是當通過添加這樣的包含來改變我的布局時:

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

我有一個錯誤“語法錯誤,意外'/'”。

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()之后... render() 我嘗試了很多東西,但我現在真的沒有任何線索。

UPDATE1我重新安裝了一個新鮮的Laravel和客人什么,問題仍然是一樣的。 如果沒有@include就可以了,使用@include我會一次又一次地出現同樣的錯誤。

UPDATE2和PROBLEM FIXED (感謝@majimboo)! 這簡直令人難以置信。 所有這些故事都與代碼無關。 這是文本編輯器的問題:Windows上的Notepad ++ 由於未知原因,僅針對某些文件,它從“編輯/ EOL轉換/ Windows格式”切換為“編輯/ EOL轉換/ Mac格式”。 顯然,Laravel根本不是Mac格式! 因此,如果您在Windows上使用Notepad ++,請確保您具有:' EOL轉換/ Windows格式 '

問題出在包含的文件中。

首先檢查問題是否真的如此,刪除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>

檢查以了解有關刀片的更多信息。


問題似乎是別的,我只想分享一下,如果它可以幫助你:

我使用Notepad ++作為文本編輯器,由於一些奇怪的原因,它決定使用“MAC格式”作為行尾(EOL)格式。 顯然Blade框架無法應對。 使用轉換功能(在記事本++:編輯 - > EOL轉換中)轉換為Windows格式,它將正常工作...

你有這個:

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

把它改成這個:

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

通常Laravel對這個問題給出了很好的暗示。 問題可能出在CSS或JS include語句中。 首先確保您已打開laravel的調試模式。 這是怎么做的。

  1. 在第16行配置/ app - > debug = true
  2. 刷新錯誤所在的頁面

我故意遺漏了關閉')'的css文件。 laravel FW顯示了該錯誤的位置,它會顯示類似的錯誤。

希望它有所幫助。

在我的情況下,問題是一些PHP中的未終止字符串,與Laravel抱怨的文件完全不同。 我通過刪除文件中的所有內容並逐個添加行來消除它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM