繁体   English   中英

扩展 Laravel Blade 时如何将变量传递给指令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM