Php Laravel-返回视图::make vs$layout
通常,我在Laravel中管理布局,如下所示: 视图/index.blade.phpPhp Laravel-返回视图::make vs$layout,php,laravel,laravel-4,blade,Php,Laravel,Laravel 4,Blade,通常,我在Laravel中管理布局,如下所示: 视图/index.blade.php <html> <body> @yield('content') </body> </html> @extends('index') @section('content') <p>whatever</p> @stop class MainController extends \BaseContro
<html>
<body>
@yield('content')
</body>
</html>
@extends('index')
@section('content')
<p>whatever</p>
@stop
class MainController extends \BaseController {
public function root(){
return View::Make('main.root');
}
}
class MainController extends \BaseController {
public $layout = "index";
public function root(){
$this->layout->nest('content', 'main.root');
}
}
现在我正在阅读有关$layout变量的文章。文件说:
您的应用程序可能在其大部分应用程序中使用通用布局
页。在每个控制器操作中手动创建此布局
可能是一种痛苦。指定控制器布局将使
发展更令人愉快
但我看不出这怎么会让它更有趣
这是相同的代码,但使用$layout变量:
controllers/MainController.php
<html>
<body>
@yield('content')
</body>
</html>
@extends('index')
@section('content')
<p>whatever</p>
@stop
class MainController extends \BaseController {
public function root(){
return View::Make('main.root');
}
}
class MainController extends \BaseController {
public $layout = "index";
public function root(){
$this->layout->nest('content', 'main.root');
}
}
现在,这怎么容易呢?对我来说,这似乎更像是代码。此外,我已经说过,root
blade扩展了index
,所以这里似乎有重复
我可能对这项技术有点误解。有人能帮我理解一下吗?如果你设置了BaseController:(如果存在,Laravel会自动调用
setupLayout()
)
您只需将@section()
名称指定为属性,而不必@extend()
您的视图。和/或重写从BaseController继承的布局
class MainController extends \BaseController {
public function index(){
$this->layout->content = View::make('main.index');
}
}
在您看来:
@section('content')
<div class="row-fluid">
Test
</div>
@stop
@yield('content')
关键是
@extends
无论这是否是一个好的实践,或者它是否能帮你省去任何痛苦,这都是有争议的,但这就是它背后的想法。我一直在IRC上询问,似乎这实际上是来自Laravel 3,现在@extends是一种新的做事方式。因此,似乎
setupLayout
是一种遗留代码。所以我想我可以放心地忽略它。这并不像你解释的那样有效。。。我有个错误,你有什么错误?答案的代码在我看来很好。当然,只是添加了视图。我还回答了一些可能有用的问题,因为这是关于类似的事情。