【问题标题】:Extending blade template for opening and closing tags为打开和关闭标签扩展刀片模板
【发布时间】:2015-04-01 01:41:05
【问题描述】:

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

我不确定如何处理“开始”和“结束”标签。谁能给我举个例子?

【问题讨论】:

  • 能否请您添加一个您想转换为刀片语法的特定 php 语法?

标签: laravel-4 blade


【解决方案1】:

在您的app/ 文件夹中创建一个新文件blade_extensions.php。然后在该文件中放入以下内容:

<?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' 的检查相匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 2014-06-13
    • 1970-01-01
    • 2014-09-19
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    相关资源
    最近更新 更多