【发布时间】: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。