2015-02-02 1 views
0

Я пытаюсь обернуть мою голову вокруг расширения шаблонов лезвия в Laravel 4.2, пример в документации говорится:Расширение шаблона лезвия для открытия и закрытия тегов

Blade::extend(function($view, $compiler) 
{ 
    $pattern = $compiler->createMatcher('datetime'); 

    return preg_replace($pattern, '$1<?php echo $2->format(\'m/d/Y H:i\'); ?>', $view); 
}); 

Это работает для одиночных тегов лопастных таких @datetime(...).

Я пытаюсь расширить (больше как псевдоним) что-то такое, как

@if($var == 'foo') 

bar 

@endif 

в

@foo 

bar 

@endfoo 

Я не уверен, как обращаться с «открытие» и теги «закрывающих». Может ли кто-нибудь показать мне пример?

+0

Можете ли вы добавить специальный синтаксис php, который вы хотели бы преобразовать в синтаксис лезвия? – Mysteryos

ответ

1

Создайте новый файл blade_extensions.php в вашей папке app/. Затем внутри этого файла поместить следующее:

<?php 

Blade::extend(function($view, $compiler) 
{ 
    $pattern = $compiler->createMatcher('foo'); 

    return preg_replace($pattern, '$1<?php if ($2 == "foo") : ?>', $view); 
}); 

Blade::extend(function($view, $compiler) 
{ 
    $pattern = $compiler->createPlainMatcher('endfoo'); 

    return preg_replace($pattern, '$1<?php endif; ?>', $view); 
}); 

Затем в app/start/global.php на дне после require app_path().'/filters.php'; добавить:

require app_path().'/blade_extensions.php'; 

Затем на ваш взгляд, вы можете написать следующее:

@foo ($var) 
    bar 
@endfoo 

Я не знаю, точно ли это структура управления, которую вы ищете, но которая соответствует проверке на $var == 'foo'

Смежные вопросы