eri*_*bae 13 php laravel laravel-4
在Laravel 3中,我曾经这样做过.
<?php render('partials.header'); ?>
Run Code Online (Sandbox Code Playgroud)
这是在"PHP"视图中完成的,没有使用Laravel的Blade模板.
版本4中的等价物是什么?
我试过了
<?php @include('partials.header'); ?>
Run Code Online (Sandbox Code Playgroud)
这不起作用.
如果我做
@include('partials.header')
Run Code Online (Sandbox Code Playgroud)
我必须将我的文件保存为".blade.php"
如何在不使用刀片模板的情况下包含"子视图"?
Rob*_*ood 24
在Laravel 4的视图中包含视图有不同的方法.您的选择将取决于下面列出的任何一个结果......
您可以在适当的Controller中编译(渲染)局部视图,并使用该$data['']数组将这些视图传递到主视图.
随着观看次数的增加,这可能会变得乏味,但是嘿,至少有很多灵活性:)
请参阅以下代码以获取示例:
...
public function showMyView()
{
/* Header partial view */
$data['header'] = View::make('partials.header');
/* Flexible enough for any kind of partial views you require (e.g. a Header Menu partial view) */
$data['header_menu'] = View::make('partials.header_menu');
/* Footer partial view */
$data['footer'] = View::make('partials.footer');
return View::make('myView', $data);
}
...
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式在上面包含部分内容(在View代码中的任何位置):
<html>
<head></head>
<body>
<!-- include partial views -->
<?php echo ($header) ?>
<?php echo ($header_menu) ?>
<div id="main-content-area"></div>
<?php echo ($footer) ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您的部分视图现在将添加到主视图中.
实际上比使用上述方法更简单:只需将其包含在视图的html中......
<html>
<head></head>
<body>
<!-- include partial view: header -->
<?php echo View::make('partials.header') ?>
<div id="main-content-area">
</div>
<!-- include partial view: footer -->
<?php echo View::make('partials.footer') ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
确保partials的文件夹结构是[views/partials/header.php],以便为Laravel的View :: make()函数提供正确的文件路径.
如果您尝试传入$data['page_title']控制器,嵌套视图将不会收到数据.
要将数据传递给这些嵌套视图,您需要这样做:
<html>
<head></head>
<body>
<?php
/* Pass page title to header partial view */
$data ['page_title'] = "My awesome website";
echo View::make('partials.header', $data);
?>
<div id="main-content-area"></div>
<?php echo View::make('partials.footer') ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题清楚地说明:"不使用Blade模板",所以我确保提供一个不包含任何Blade模板代码的解决方案.
你可以在视图中嵌套你的部分尝试这个
View::make('folder.viewFile')->nest('anyname', 'folder.FileName');
Run Code Online (Sandbox Code Playgroud)
然后从模板中访问嵌套视图文件,{{ $anyname }}这样您就不必在视图中包含文件,这也适用于.php文件.
我不确定自从这篇文章以来有多少人在这篇文章中使用过Laravel 4,但是如果你想要包含部分或分离你的视图类型你可以用@includes来做
例如,如果您想要页眉,页脚,侧边栏等的partials文件夹
为下的部分创建一个目录
app/views/partials
Run Code Online (Sandbox Code Playgroud)
然后创建一个部分
app/views/partials/navigation.blade.php
Run Code Online (Sandbox Code Playgroud)
然后在主模板文件中添加该行
@include('partials.navigation')
Run Code Online (Sandbox Code Playgroud)
这就是全部.
**您还可以将数据传递给部分或包含部分内的嵌套部分
我知道这是一个迟到的答案,但我想,因为我没有在其他答案中看到这个解决方案,这是好的.
如果您想在每个页面上包含页眉和页脚,我会将它们添加到前后过滤器中.只需转到app文件夹中的filters.php即可
App::before(function($request)
{
echo View::make('partials.header');
});
App::after(function($request, $response)
{
echo View::make('partials.footer');
});
Run Code Online (Sandbox Code Playgroud)
以这种方式执行此操作时,您无需在视图文件中添加任何内容以包含它们.