0

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

@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');
    }
}
4

2 回答 2

1

在您的布局中:

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

在您看来:

@section('title', 'Your title here')
于 2013-07-30T10:57:21.107 回答
0

我想不出一种直接使用 View 甚至刀片引擎来仅返回部分内容的方法。因此,我认为丑陋的蛮力方法是唯一的方法,因为这只是在平面文件 => db 转换器中使用,它一年只运行几次,所以速度不是要求。

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;
}
于 2013-07-30T14:14:13.930 回答