Итак, у меня есть такой код для печати моей индексной страницы:
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('{={', '}=}');
Поэтому я должен был использовать {= вместо {{
Надеюсь, это поможет кому-то в будущем.
{=
? Обычно папку vendors не следует изменять, потому что, если вы обновите ее через композитор, ваши изменения будут перезаписаны. - person Glad To Help   schedule 27.10.2013