我正试图在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 :(得分: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'