【问题标题】:How to grab content of @section('title')如何获取@section('title') 的内容
【发布时间】:2013-07-30 08:52:41
【问题描述】:

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

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

【问题讨论】:

    标签: laravel laravel-4 blade


    【解决方案1】:

    我想不出一种直接使用 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;
    }
    

    【讨论】:

      【解决方案2】:

      在您的布局中:

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

      在你看来:

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

      【讨论】:

      • 啊,我注意到我的问题中的语言令人困惑。我已对其进行了澄清编辑。我需要做的是通过控制器中的某种机制来获取视图中定义的@section('title') 的内容。这样我的撰稿人就可以只编辑文本视图文件,我可以运行我的导入命令来用页面标题等更新数据库。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 2013-11-12
      相关资源
      最近更新 更多