为开始和结束标签扩展 blade 模板
Extending blade template for opening and closing tags
我正在尝试在 Laravel 4.2 中扩展 blade 模板,文档中的示例指出:
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('datetime');
return preg_replace($pattern, '<?php echo ->format(\'m/d/Y H:i\'); ?>', $view);
});
这适用于单个 blade 标签,例如 @datetime(...)
。
我正在尝试扩展(更像是别名)诸如
@if($var == 'foo')
bar
@endif
至
@foo
bar
@endfoo
我不确定如何处理 "opening" 和 "closing" 标签。有人可以给我举个例子吗?
在您的 app/
文件夹中创建一个新文件 blade_extensions.php
。然后在该文件中放入以下内容:
<?php
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('foo');
return preg_replace($pattern, '<?php if ( == "foo") : ?>', $view);
});
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createPlainMatcher('endfoo');
return preg_replace($pattern, '<?php endif; ?>', $view);
});
然后在你的app/start/global.php
底部require app_path().'/filters.php';
之后添加:
require app_path().'/blade_extensions.php';
那么在你的视图中可以这样写:
@foo ($var)
bar
@endfoo
我不知道这是否正是您正在寻找的控制结构,但这与 $var == 'foo'
的检查匹配
我正在尝试在 Laravel 4.2 中扩展 blade 模板,文档中的示例指出:
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('datetime');
return preg_replace($pattern, '<?php echo ->format(\'m/d/Y H:i\'); ?>', $view);
});
这适用于单个 blade 标签,例如 @datetime(...)
。
我正在尝试扩展(更像是别名)诸如
@if($var == 'foo')
bar
@endif
至
@foo
bar
@endfoo
我不确定如何处理 "opening" 和 "closing" 标签。有人可以给我举个例子吗?
在您的 app/
文件夹中创建一个新文件 blade_extensions.php
。然后在该文件中放入以下内容:
<?php
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createMatcher('foo');
return preg_replace($pattern, '<?php if ( == "foo") : ?>', $view);
});
Blade::extend(function($view, $compiler)
{
$pattern = $compiler->createPlainMatcher('endfoo');
return preg_replace($pattern, '<?php endif; ?>', $view);
});
然后在你的app/start/global.php
底部require app_path().'/filters.php';
之后添加:
require app_path().'/blade_extensions.php';
那么在你的视图中可以这样写:
@foo ($var)
bar
@endfoo
我不知道这是否正是您正在寻找的控制结构,但这与 $var == 'foo'