尝试使用刀片模板实现简单的页面布局时,我得到了一个无法解释的FatalErrorException。我不确定这是我做错了还是Laravel。我正在按照关于模板的L4文档的教程,我的代码似乎遵循它。这是我的代码。
应用程序/ routes.php文件:
<?php
Route::get('/', 'HomeController@showWelcome');
应用程序/视图/家/ welcome.blade.php:
@extends('layouts.default')
@section('content')
<h1>Hello World!</h1>
@stop
应用程序/视图/布局/ default.blade.php:
<!doctype html>
<html>
<head>
<title>The Big Bad Barn (2013)</title>
</head>
<body>
<div>
@yield('content')
</div>
</body>
</html>
应用程序/控制器/ 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(); ?>
答案 0 :(得分:8)
昨天我遇到了同样的问题,但是其他答案并没有解决我的问题。你可能已经把它弄清楚了,但也许这个帖子可以防止别人花费尽可能多的时间来弄清楚什么是错的,而它是如此小(但令人沮丧的!)的事情。
我使用Notepad ++作为文本编辑器,出于某种奇怪的原因,它决定使用“MAC格式”作为行尾(EOL)格式。显然Blade框架无法应对。使用转换功能(在记事本++:编辑 - &gt; EOL转换中)转换为Windows格式,它将正常工作..
答案 1 :(得分:0)
您的控制器应该只返回View :: make(“home.welcome”)而不是将其附加到布局。
欢迎视图然后调用布局,因此控制器仅关注此情况下的主体模板。
编辑以显示示例控制器:
class HomeController extends BaseController {
public function showWelcome()
{
return View::make('home.welcome');
}
}
答案 2 :(得分:0)
Eric已经给出了正确答案,我只是想补充一下,如果你想使用
protected $layout = 'layouts.default';
在HomeController中,然后保持showWelcome动作不变并删除此行
@extends('layouts.default')
来自welcome.blade.php文件。这也应该有用。
此致 维拉德