扩展刀片模板以打开和关闭标签

时间:2015-02-02 06:24:53

标签: laravel-4 blade

我正试图在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

我不确定如何处理“打开”和“关闭”标签。有人能告诉我一个例子吗?

1 个答案:

答案 0 :(得分: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'

的检查相匹配