laravel 刀片包含错误 - 语法错误,意外
Posted
技术标签:
【中文标题】laravel 刀片包含错误 - 语法错误,意外【英文标题】:laravel blade include error - syntax error, unexpected 【发布时间】:2014-06-01 06:48:04 【问题描述】:我在本地使用 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()
之后添加了两个;?>
。
我已经尝试了很多东西,但我现在真的没有任何线索。
更新1 我已经重新安装了一个新的 Laravel 和 guest 什么的,问题还是一样。没有@include 没关系,使用@include 我一次又一次地遇到同样的错误。
UPDATE2 和 问题已修复(感谢 @majimboo)! 这简直令人难以置信。 所有的故事都与代码无关。这是文本编辑器的问题:Windows 上的 Notepad++。由于未知原因,并且仅针对某些文件,它从“编辑/EOL 转换/Windows 格式”切换到“编辑/EOL 转换/Mac 格式”。显然,Laravel 根本没有 Mac 格式!因此,如果您在 Windows 上使用 Notepad++,请确保您有:'EOL 转换/windows 格式'
【问题讨论】:
要清楚,为什么你有一个单独的页脚的第二部分?因为看起来@include()
正在指定一个视图文件,但您似乎没有在其他任何地方引用该部分。(换句话说,请尝试从页脚文件中删除@section()
附件(例如,保留html内容))
即使只有 HTML,我也有同样的错误。
:/ 好吧,我已经对这个问题投了赞成票,希望它能引起它需要的关注,因为我没有更多的想法了。
谢谢。这真的很奇怪。如果我删除@include,它会起作用,如果我把它放回去,我会遇到同样的错误。
@Peter 我添加了一个答案。请参阅daylerees.com/codebright/blade 了解更多信息。搜索include
。
【参考方案1】:
你有这个:
@section("testfooter")
<div class="footer">2013-2014</div>
@show // <--
改成这样:
@section("testfooter")
<div class="footer">2013-2014</div>
@stop // <--
【讨论】:
该死的。我也看到了,但不确定我是否正确。 嗨。我做了更改,删除了“app\storage\views”中的文件并再次尝试,但不幸的是,同样的错误仍然存在。 同时清除浏览器缓存。【参考方案2】:问题出在被包含的文件中。
首先检查问题是否真的存在,删除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++ 作为文本编辑器,但出于某种奇怪的原因 决定使用“MAC 格式”作为行尾 (EOL) 格式。 显然 Blade 框架无法应对这种情况。使用 转换函数(在 notepad++ 中:编辑 -> EOL 转换)进行转换 到 Windows 格式,它会工作得很好......
Arjen
【讨论】:
嗨。感谢您的回复。我只尝试了<div class="footer">2013-2014</div>
,testfooter.blade.php
中没有任何内容,但问题仍然存在。我已清除浏览器缓存并删除了 storage/views
中的文件。
@Peter Laravel 现在生成什么代码?变了吗?
您的示例有效。我添加了@yield('container')
并将您的代码用作布局并调用@extends("example")
@section('container')
<h1>Hello!</h1>
@stop
并且它工作!难以置信!我真的不明白为什么之前的代码不起作用。
@Peter 我添加了一些脚注,可能会有所帮助。对不起,如果我不能提供任何进一步的帮助。
@Peter 但如果它确实有帮助,如果您接受它作为答案,我也将不胜感激:) 美好的一天。【参考方案3】:
通常 Laravel 会很好地提示问题。问题可能出在您的 CSS 或 JS 包含语句中。首先确保你打开了 laravel 的调试模式。这是怎么做的。
-
Config/app -> debug = true 在第 16 行
刷新出错的页面
我故意省略了 css 文件的关闭 ')'。 laravel FW 显示了该错误的位置,它会显示类似的错误。
希望对您有所帮助。
【讨论】:
【参考方案4】:在我的情况下,问题是某些 PHP 中的未终止字符串与 Laravel 抱怨的文件完全不同的部分。我通过删除文件中的所有内容并逐行添加来消除它。
【讨论】:
以上是关于laravel 刀片包含错误 - 语法错误,意外的主要内容,如果未能解决你的问题,请参考以下文章
使用 foreach 更新 Laravel 错误:语法错误,意外 ' ' (T_STRING),期待 ']'