douping3860 2017-07-10 15:50
浏览 43

请求刀片视图模板中使用的所有变量的列表

We have a series of blade view templates that are out going emails and would like to create a simple way for our in house administration to preview these emails without actually sending them.

I could keep tract of, and provide filler variables but am very curious if there is a way to request a list of variables used in a view?

For example, I have a basic view "greeting.blade.php" that says:

Dear {{$customerFirstName}} {{$customerLastName}},

I'd like to:

$usedVariablesArray = getVariablesFromView("greeting");

And have it return:

['customerFirstName', 'customerLastName']

Is there anything built into laravel that provides this kind of functionality?

[EDIT] I'd like to do this from outside the view file in question.

public function previewEmailTemplate($templateName) {
    $usedVariables = $getArrayOfVariables($template);
    // Would return ['customerFirstName', 'customerLastName']

    foreach($usedVariables as $aUsedVariable) {
        $dummyValues[$aUsedVariable] = $aUsedVariable;
    }

    return view($template, $dummyValues)->render();
}

So this function would render the template with the variable names in the place of the variables.

Does that make my question clearer?

  • 写回答

1条回答 默认 最新

  • douzouchang7448 2019-07-03 07:28
    关注

    I also need such function but not find on the net.

    I write a simple function to do it.

    May help you

    greeting.blade.php

    Dear {{$customerFirstName}} {{$customerLastName}},
    

    functions.php

    function getVariablesFromView($templatePath)
    {
        // $templatePath = '/resources/views/mails/greeting.blade.php'
        $contents = file_get_contents($templatePath);
    
        $re = '/{{[\ ]*\$[a-zA-Z]+[\ ]*}}/m';
        preg_match_all($re, $contents, $matches, PREG_SET_ORDER, 0);
        $flatternArray = [];
        array_walk_recursive($matches, function ($a) use (&$flatternArray) {$flatternArray[] = $a;});
        $variables = str_replace(['{{', '}}', '$', ' '], '', $flatternArray);
    
        return $variables;
        // ['customerFirstName', 'customerLastName']
    }
    

    p.s. this function doesn't support advanced blade syntax such like @extend('xxx')

    评论

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行