Ama*_*nut 8 php template-engine laravel blade
我使用的是blade templating
与laravel 4.2
我对使用该@yield
功能的功能有一点问题@section
.
让我们说在我的布局模板中,layout.blade.php
我有以下声明:
<meta name="description" content="@yield('description')">
Run Code Online (Sandbox Code Playgroud)
并且在contact.blade.php
其中layout.blade.php
我有这个:
@section('description')
this is the contact page
@stop
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
<meta name="description" content="this is the contact page
">
Run Code Online (Sandbox Code Playgroud)
问题是line break
在部分渲染结束时自动添加.
你知道如何避免这种不必要的行为吗?
小智 14
从Laravel 5开始,我最喜欢的解决方案是:
@section('description', 'this is the contact page')
Run Code Online (Sandbox Code Playgroud)
Pav*_*l L 11
您可以使用 {{trim(View::yieldContent('description'))}}
我有同样的问题.我在页面上有一些模态窗口,它有一个共同的布局,但不同的主体,标题和"id"属性.因此,应该在没有任何空格的情况下产生"id"属性.
该@yield
语句编译为echo $__env->yieldContent
调用(BladeCompiler.php,compileYield方法).$_env
这是一个实例\Illuminate\View\Factory
.所以你可以使用{{trim(View::yieldContent('description'))}}
View是一个立面.
我很确定@yield
,@section
其中并不意味着用作变量,而是根据每个派生页面的需要替换部分内容。
要实现这一点,您应该将参数传递给您的刀片,view
例如controller
:
<meta name="description" content="{{ $page_description }}">
Run Code Online (Sandbox Code Playgroud)
或者考虑替换该页面的整个元标记,即:
布局.blade.php
<meta name="title" content="This is my page title for all pages">
@yield("additional_meta_tags")
Run Code Online (Sandbox Code Playgroud)
contact.blade.php(或其他页面)
@section("additional_meta_tags")
<meta name="description" content="this is the contact page">
@stop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3401 次 |
最近记录: |