我正在blade templating
使用laravel 4.2
我对使用@yield
函数的@section
函数有一点问题。
让我们在我的布局模板layout.blade.php
中说出来,我有以下声明:
<meta name="description" content="@yield('description')">
并且contact.blade.php
扩展layout.blade.php
我有这个:
@section('description')
this is the contact page
@stop
输出是这样的:
<meta name="description" content="this is the contact page
">
问题是在部分渲染结束时自动添加了line break
。
您是否知道如何避免这种不受欢迎的行为?
答案 0 :(得分:11)
您可以使用{{trim(View::yieldContent('description'))}}
我遇到了同样的问题。我在页面上有一些模态窗口,它有一个共同的布局,但不同的主体,标题和“id”属性。因此,应该在没有任何空格的情况下产生“id”属性。
@yield
语句编译为echo $__env->yieldContent
调用(BladeCompiler.php,compileYield方法)。 $_env
这里是\Illuminate\View\Factory
的一个实例。因此,您可以使用{{trim(View::yieldContent('description'))}}
,其中View是一个外观。
答案 1 :(得分:11)
从Laravel 5开始,我最喜欢的解决方案是:
// Creating a data task
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]
dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
// Use the data here
}];
// Starting the task
[dataTask resume];
答案 2 :(得分:4)
我非常确定@yield
和@section
并不打算用作变量,而是根据每个派生页面的需要替换部分内容。
要实现这一点,您应该将参数从view
传递到您的刀片controller
,如:
<meta name="description" content="{{ $page_description }}">
或考虑替换该页面的整个元标记,即:
<强> layout.blade.php 强>
<meta name="title" content="This is my page title for all pages">
@yield("additional_meta_tags")
contact.blade.php (或其他网页)
@section("additional_meta_tags")
<meta name="description" content="this is the contact page">
@stop