Laravel 4:在单行中包含带参数的模板
我试图将刀片模板保存到javascript变量中,但我不知道如何从模板中删除换行符 我研究了扩展刀片,并基于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
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')))