Laravel 4:在单行中包含带参数的模板

Laravel 4:在单行中包含带参数的模板,laravel,laravel-4,blade,Laravel,Laravel 4,Blade,我试图将刀片模板保存到javascript变量中,但我不知道如何从模板中删除换行符 我研究了扩展刀片,并基于BladeCompiler:compileInclude()创建了以下代码,该代码删除了所有换行符,但仅适用于不带参数的模板 Blade::extend(function($view, $compiler) { $pattern = $compiler->createMatcher('include_string'); return preg_replace($pa

我试图将刀片模板保存到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);
});
Blade::extend(函数($view,$compiler)
{
$pattern=$compiler->createMatcher('include_string');
返回preg_replace($pattern,$1',$view);
});
我知道我可以简单地手动删除模板中的所有换行符,但我希望有更好的方法


以前有人这样做过吗?非常感谢您的帮助。

我还没有找到一种方法来创建您自己的刀片函数,它可以接收多个值(或一个数组),而且我认为使用“仅”
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);
});
或者如果您更喜欢
$\uu env
语法:

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

这和预期的一模一样,谢谢。我以前尝试过嵌套刀片函数,但出于某种原因,我从未想过使用普通PHP。不客气。是的,嵌套刀片函数不幸无法工作,因为它们返回一个带有

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