![](/img/trans.png)
[英]Laravel 5: How can I pass a variable from a controller method to app.blade.php?
[英]How can I pass a variable to a directive when extending Laravel Blade?
创建自定义 Laravel Blade 指令时,如何传入变量? 目前,传递给 @svg() 指令的变量没有被解析,而是被视为字符串:
刀片视图:
@svg($svg->url, 'fill-white')
应用服务提供者.php
Blade::directive('svg', function ($arguments) {
list($path, $class) = array_pad(explode(',', trim($arguments, "() ")), 2, '');
$path = trim($path, "' ");
$class = trim($class, "' ");
dd($path); // Outputs $svg->url
// Required output = path/to/filename.svg
});
更新代码(基于 Andrei Dascalu 的回答):
刀片模板:
@php($svg = 'test.svg')
@svg($svg, 'fill-white')
应用服务提供者:
Blade::directive('svg', function ($arguments) {
eval("\$params = [$arguments];");
// Produces 'undefined variable $svg' error
list($path, $class) = $params;
});
我相信您正在寻找传递多个参数的方法,应该是这样的:
eval("\$params = [$arguments];");
list($param1, $param2, $param3) = $params;
这样你就可以调用 @mydirective($param1, $param2, $param3) 并且闭包将处理将参数与单个 $arguments 字符串分开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.