我想在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
我怎样才能做到这一点?
答案 0 :(得分:2)
事情是preg_replace模式。潜入BladeCompiler
我发现它有更多的createMatcher
方法。
致电
@test
没有括号,只需更改
$pattern = $compiler->createMatcher('test');
为:
$pattern = $compiler->createPlainMatcher('test');
在这种情况下创建正确的模式。