Странное поведение 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->file}}, Медиа: {{$css_file->media}}

Файл: {{$css_file->file}}, Медиа: {{$css_file->media}}

вместо этого:

Файл: файл1, носитель: все

Файл: файл2, Медиа: все

Кто-нибудь может объяснить, почему? Спасибо за помощь, я очень новичок в Blade.

--ИЗМЕНИТЬ--

Я уже решил проблему, мне приходится редактировать конфигурацию синтаксиса Blade в

поставщик\laravel\framework\Illuminate\view\compilers\BladeCompiler.php

из

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

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

to

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

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

Поэтому я должен был использовать {= вместо {{

Надеюсь, это поможет кому-то в будущем.


person user2002495    schedule 27.10.2013    source источник
comment
Почему вы должны были использовать {= ? Обычно папку vendors не следует изменять, потому что, если вы обновите ее через композитор, ваши изменения будут перезаписаны.   -  person Glad To Help    schedule 27.10.2013
comment
используется для объединения лезвия с angular.js, пришлось изменить синтаксис   -  person user2002495    schedule 28.10.2013
comment
Теперь это имеет смысл   -  person Glad To Help    schedule 28.10.2013


Ответы (1)


Вам не хватает @stop под заголовком. Попробуйте сделать так

@section('title')
  {{ $title }}
@stop
person Glad To Help    schedule 27.10.2013