微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当字符串与变量连接时创建自定义 Laravel Blade 指令的更简单方法

如何解决当字符串与变量连接时创建自定义 Laravel Blade 指令的更简单方法

我创建了以下刀片指令:

    Blade::directive('bundle',function ($component) {
        $string = "\":langs='\" . file_get_contents(base_path() . \"/resources/bundles/\" . App::currentLocale() . \"/$component.json\").\"'\";";
        return ("<?PHP echo " . $string . "?>");
    });

为了更好地理解发生了什么,这是我想用上面的字符串表示的代码(但作为 Blade 指令,这不是一个选项):

$path = base_path() . "\\resources\\bundles\\" . App::currentLocale() ."\\$component.json";
$json = file_get_contents($path);
return "<?PHP echo \":langs='\" $json \"'\"; ?>

现在,当 .json 文件中有单引号时,上面的 Blade 指令将不起作用,因为外部引号也是单引号。但无论如何,我觉得创建这个字符串太难了,我想知道有没有更简单的方法生成最终字符串来回显结果?

解决方法

根据你的信息,这是我得到的:

Blade::directive('bundle',function ($component) {
    $encoding = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT;
    $component = trim($component,"'\" ");

    $string = sprintf(
        '":langs=\'" . json_encode(json_decode(file_get_contents(%s),true),%d) . "\'"','resource_path("bundles/" . App::getLocale() . "/' . $component . '.json")',$encoding
    );

    return ('<?php echo ' . $string . '?>');
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。