[英]How to create a variable in a blade template in laravel 5 to be used by a partial view
[英]Laravel 4 - including a “partial” view within a view (without using Blade template)
在Laravel 3中,我曾经这样做。
<?php render('partials.header'); ?>
这是在“ PHP”视图中完成的,无需使用Laravel的Blade模板。
在版本4中这等效于什么?
我试过了
<?php @include('partials.header'); ?>
这行不通。
如果我做
@include('partials.header')
我必须将文件另存为“ .blade.php”
如何在不使用刀片模板的情况下包含“子视图”?
在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);
}
...
您可以按如下方式包括上述部分内容(在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>
您的局部视图现在将添加到您的主视图中。
实际上,比使用上面的方法要简单得多:只需将其包含在视图的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>
确保局部文件的文件夹结构为[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>
该问题明确指出:“不使用Blade模板”,因此我确保提供不包含任何Blade模板代码的解决方案。
您可以将局部视图嵌套在视图中
View::make('folder.viewFile')->nest('anyname', 'folder.FileName');
然后以这种方式从模板{{ $anyname }}
访问嵌套视图文件,而不必在视图中包括文件,这也适用于.php文件。
自从发布以来,我不确定在这篇文章中有多少人使用过Laravel 4,但是如果您希望包含局部视图或分离视图类型,可以使用@includes来完成。
例如,如果您想为页眉,页脚,侧边栏等添加局部文件夹
在下面创建局部目录
app/views/partials
然后创建一个局部
app/views/partials/navigation.blade.php
然后在主模板文件中添加以下行
@include('partials.navigation')
这就是全部。
**奖金,您还可以将数据传递到部分或在部分中包含嵌套的部分
我知道这是一个较晚的答案,但我认为,因为在其他答案中我看不到这种解决方案是可以的。
如果要在每个页面上都包含页眉和页脚,则可以将它们添加到before和after过滤器中。 只需转到您应用程序文件夹中的filters.php
App::before(function($request)
{
echo View::make('partials.header');
});
App::after(function($request, $response)
{
echo View::make('partials.footer');
});
这样一来,您无需在视图文件中添加任何内容即可将其包括在内。
您可以使用View的nest函数
View::make('default.layout')->nest('header', 'default.header');
使用第三个参数将数据传递到模板
View::make('default.layout')->nest('header', 'default.header', ['name' => 'John Doe', 'test' => 'It works!']);
在您的意见/ default / header.blade.php上
<div>hey {{ $name }}! {{ $test }}</div>
我对Laravel还是很陌生,但是我认为以下内容非常理想...
Route::get('/', function()
{
$data['title'] = 'sample';
return View::make('page', $data);
});
# /views/partials/header.php
# /views/partials/footer.php
View::composer('page', function($view)
{
$view->with('header', View::make('partials.header', $view->getData()));
$view->with('footer', View::make('partials.footer', $view->getData()));
});
参见Laravel View Composers .. http://laravel.com/docs/responses#view-composers
/views/page.php
<?php echo $header; ?>
<div>CONTENT</div>
<?php echo $footer; ?>
从一个视图中,只需回显另一个视图:
echo View::make('header'); //This will look for a view called header.php
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.