Laravel 4刀片模板导致FatalErrorException?
Posted
技术标签:
【中文标题】Laravel 4刀片模板导致FatalErrorException?【英文标题】:Laravel 4 blade templates causing FatalErrorException? 【发布时间】:2013-05-08 20:19:06 【问题描述】:我在尝试使用刀片模板实现简单的页面布局时遇到无法解释的 FatalErrorException。我不确定这是我做错了什么还是 Laravel 是。我正在关注 L4 关于模板的文档的教程,我的代码似乎也遵循了它。这是我的代码。
app/routes.php:
<?php
Route::get('/', 'HomeController@showWelcome');
app/views/home/welcome.blade.php:
@extends('layouts.default')
@section('content')
<h1>Hello World!</h1>
@stop
app/views/layouts/default.blade.php:
<!doctype html>
<html>
<head>
<title>The Big Bad Barn (2013)</title>
</head>
<body>
<div>
@yield('content')
</div>
</body>
</html>
app/controllers/HomeController.php:
<?php
class HomeController extends BaseController
protected $layout = 'layouts.default';
public function showWelcome()
$this->layout->content = View::make('home.welcome');
Laravel 只是抛出一个 FatalErrorException。输出错误页面显示“语法错误,意外'?'”。在 storage/views 目录中生成的文件刀片有 PHP,其中
<?php echo $__env->make('layouts.default')
<?php $__env->startSection('content', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>; ?>
<h1>Hello World!</h1>
<?php $__env->stopSection(); ?>
【问题讨论】:
你能在@extends
行之后添加一个空行吗?看起来应该在第一行的?>
已经在第三行结束了。
【参考方案1】:
昨天我遇到了同样的问题,但是其他答案并没有解决我的问题。您可能已经想通了,但也许这篇文章会阻止其他人像我一样花费大量时间来找出问题所在,而这只是一件小事(但令人沮丧!)。
我使用 Notepad++ 作为文本编辑器,出于某种奇怪的原因,它决定使用“MAC 格式”作为行尾 (EOL) 格式。显然 Blade 框架无法应对这种情况。使用转换功能(在记事本++中:编辑-> EOL转换)转换为Windows格式,它会工作得很好..
【讨论】:
哇,非常感谢。您刚刚为我们的团队节省了一天的工作时间! 我无法修复它。我正在使用 phpstorm。【参考方案2】:Eric 已经给出了正确的答案,我只是想补充一下,如果你想使用
protected $layout = 'layouts.default';
在您的 HomeController 中,保持 showWelcome 动作不变并删除此行
@extends('layouts.default')
来自welcome.blade.php 文件。这也应该有效。
问候, 弗拉德
【讨论】:
【参考方案3】:您的控制器应该只是返回 View::make("home.welcome") 而不是将其附加到布局中。
然后欢迎视图调用布局,因此在这种情况下控制器只关心正文模板。
编辑以显示示例控制器:
class HomeController extends BaseController
public function showWelcome()
return View::make('home.welcome');
【讨论】:
以上是关于Laravel 4刀片模板导致FatalErrorException?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4 控制器模板/刀片 - 正确的方法? [关闭]
是否可以在 Laravel (4) 刀片模板中获取视图/布局名称