Laravel 4:包含带有参数的模板

时间:2014-12-23 12:11:18

标签: laravel laravel-4 blade

我正在尝试将刀片模板保存到javascript变量中,但我无法弄清楚如何从模板中删除换行符。

我查看了扩展刀片并根据BladeCompiler:compileInclude()创建了以下代码,该代码删除了所有换行符,但仅适用于没有参数的模板。

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

    return preg_replace($pattern, '$1<?php echo str_replace(array("\r","\n"), "", $__env->make($2, array_except(get_defined_vars(), array(\'__data\', \'__path\')))->render()); ?>', $view);
});

我知道我可以手动删除模板中的所有换行符,但我希望有更好的方法。

以前有人这样做过吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我还没有找到一种方法来创建自己的刀片功能,可以接收多个值(或数组),我不认为它甚至可以通过使用&#34;只有&#34; Blade::extend。当然,您可以扩展Laravel的BladeCompiler类并编写更强大的宏。

但我建议你创建一个宏来删除换行符。

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

    return preg_replace($pattern, '$1<?php echo str_replace(array("\r","\n"), "", $2); ?>', $view);
});

使用它或者像这样:

@singleline(View::make('view-name', array('foo' => 'bar')))

或者如果您更喜欢$__env语法:

@singleline($__env->make('view-name', array('foo' => 'bar')))