Laravel 4 - 扩展刀片,没有支架的命令问题

时间:2014-05-15 10:13:36

标签: php laravel laravel-4 blade

我想在laravel 4中扩展刀片以获得一些自定义命令,我想在没有括号的情况下调用它们。例如,我想打电话:

@test

所以我创建了Blade :: extend函数,如下所示:

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

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

当我用它调用它时,它工作正常:

@test()

但是当我用它打电话时失败了:

@test

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

事情是preg_replace模式。潜入BladeCompiler我发现它有更多的createMatcher方法。

致电

@test

没有括号,只需更改

$pattern = $compiler->createMatcher('test');

为:

$pattern = $compiler->createPlainMatcher('test');

在这种情况下创建正确的模式。