这是我的路线
Route::get('test', array('uses'=>'TestController@showTest'));
这是我的控制器:
class TestCOntroller extends \BaseController {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function showTest()
{
return View::make('test.Test');
}}
这是我的观点/ test / Test.blade.php
@section('content')
<h1>HTML Ipsum Presents</h1>
@stop
当我尝试访问该网址时,它什么也没显示。我该怎么办?
答案 0 :(得分:3)
@section('content')
定义了一个您永远不会显示的内容块,您基本上是设置一个变量,而不是将其打印到屏幕上。
创建一个名为layout或其他的模板并将其放入其中。
<!DOCTYPE html>
<html>
<head>
<title>hooray!</title>
</head>
<body>
@yield('content')
</body>
</html>
并将@extends('layout')
放在当前模板的顶部。
然后您的内容会显示出来。
答案 1 :(得分:3)
您没有从任何其他刀片模板进行扩展,因此没有定义任何部分content
。
您正在使test/Test
查看顶级视图,您需要在该视图中定义HTML的整个结构。
尝试创建新视图,例如app/view/layouts/master.blade.php
,并将此内容添加到:
<!DOCTYPE html>
<html>
<head></head>
<body>
@yield('content', '')
</body>
</html>
修改您的测试视图以将其包含在顶部:
@extends('layouts.master')
答案 2 :(得分:2)
根据您的Route
,如下所示:
Route::get('test', array('uses'=>'TestController@showTest'));
您的Controller
应该是:
class TestController extends \BaseController {
public function showTest()
{
return View::make('test.test');
}
}
所以在这种情况下,Blade View
应该是这样的:
// app/views/test/test.blade.php
@extends('layouts.master')
@section('content')
<h1>HTML Ipsum Presents</h1>
@stop
确保layouts
文件夹中有一个views
文件夹,其中包含一个master.blade.php
文件作为主Layout
,应该是这样的:
<!-- app/views/layouts/master.blade.php -->
<html>
<head>
<title>Test Site</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
因此,无论何时通过扩展master.blade.php
创建视图,html/text
中@section('content')
和@stop
中包含的child-view
都会被转储到@yield
在master.blade.php
文件中的位置,因此请始终使用child-view
扩展主模板以创建@extend('layouts.master')
。有关Templating的详细信息,请访问Laravel
网站。