Laravel 4 Blade奇怪的行为

时间:2013-10-27 09:24:37

标签: php laravel laravel-4 blade

所以,我有这种代码来打印索引页面:

class PageController extends MediaController {

protected $layout = 'layouts.main';

public function index_page() {
    $data = array();

    $data['title'] = 'Dynamic Title';
    $data['css_files'] = array(
        array('media'=>'all', 'file'=>'file1'),
        array('media'=>'all', 'file'=>'file2')
    );

    $this->layout->content = View::make('index', $data);
}

}

和我的main.blade.php:

<html>

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

<body>
    @yield('content')
    @yield('css_files')
</body>

</html>

和我的index.blade.php:

@section('title', $title)

@section('css_files')
    @foreach ($css_files as $css_file)
        <p>File: {{ $css_file->file }}, Media: {{ $css_file->media }}</p>
    @endforeach
@stop

@section('content')
    <h1>Rendered Successfully!</h1>
@stop

标题渲染很好,但css文件打印出来:

  

文件:{{$ css_file-&gt; file}},媒体:{{$ css_file-&gt; media}}

     

文件:{{$ css_file-&gt; file}},媒体:{{$ css_file-&gt; media}}

而不是:

  

文件:file1,媒体:全部

     

文件:file2,媒体:全部

任何人都可以解释原因吗?感谢您的帮助,我对Blade非常陌生。

- 编辑 -

我已经解决了这个问题,我碰巧编辑了

中的Blade语法配置
  

供应商\ laravel \框架\照亮\视图\编译器\ BladeCompiler.php

来自

protected $contentTags = array('{{', '}}');

    /**
     * Array of opening and closing tags for escaped echos.
     *
     * @var array
     */
    protected $escapedTags = array('{{{', '}}}');

protected $contentTags = array('{=', '=}');

    /**
     * Array of opening and closing tags for escaped echos.
     *
     * @var array
     */
    protected $escapedTags = array('{={', '}=}');

所以我应该使用{=而不是{{

希望这有助于将来。

1 个答案:

答案 0 :(得分:1)

您在标题部分下方缺少@stop。试着像这样做

@section('title')
  {{ $title }}
@stop