如何获取@section('title')的内容

时间:2013-07-30 09:24:39

标签: laravel laravel-4 blade

我编写了一个基于静态文件的页面管理系统,它依赖于每个页面都是以下结构的刀片模板:

@extends('en/frontend/layouts/page_section')
{{-- Page Title --}}
@section('title')
Current Page Title
@parent
@stop

{{-- Page content --}}
@section('pageContent')
...
@stop

因此,我可以使用指向此部分中所有网页的链接进行下拉,我只想抓取@section('title')中的内容。

我知道这是可能的,我只是不知道如何。

请告知,谢谢。

编辑为了澄清,我想将视图加载到我的控制器中并获取部分标题的值,例如以下伪代码

Class Controller{

    // would return string 'Current Page Title' for above example
    public function getTitle($viewSlug)
    {
        $view = View::make($viewSlug);
        return $view->section('title');
    }
}

2 个答案:

答案 0 :(得分:1)

在你的布局中:

<title>@yield('title')</title>

在您看来:

@section('title', 'Your title here')

答案 1 :(得分:0)

我无法找到一种方法来直接使用View甚至刀片引擎返回一个部分的内容。因此,我认为丑陋的暴力方法是唯一的方法,因为这只是在flatfile中使用=&gt;数据库转换器每年只运行几次,因此速度不是必需的。

function getTitle($viewSlug)
{
    // get path to view file
    $viewPath = \View::make($viewSlug)
        ->getPath();

    $view = \File::get($viewPath);
    // flatten view as we dont know how to use regex without this
    $view = str_replace("\n", '', $view);

    $titleRegex = "/@section\('title'\)(.*)@parent/";
    preg_match( $titleRegex, $view, $matches );
    return $matches;
}