Laravel blade 模板引擎怎么样直接解析内容而不通过模板文件?

我现在有个需求 使用laravel内置的blade模板引擎,直接解析内容 而不通过模板 不知道怎么实现 请大家指教
比如:

    $content = '{{$name}}-{{$email}}';
    $html = view($content, ['name' => 'laravel', 'email' => 'laravel@laravel-china.org']);
//   希望的$html内容为:“laravel-laravel@laravel-china.org”

请各位大神指教,谢谢 :pray:

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
Summer

使用 render() 方法

$view = view($content, ['name' => 'laravel', 'email' => 'laravel@laravel-china.org']);
$contents = $view->render();
6年前 评论

@Summer 不好使啊,view函数的第一个参数只能传递模板路径,直接传递内容抛出找不到模板的异常。我使用 ‘Twig’ 模板引擎解决的。谢谢你!

6年前 评论
Summer

应该是这里出的问题:

{{$name}}-{{$email}}

不支持横杆

6年前 评论
use Illuminate\Contracts\View\Factory as ViewFactory;

  function blade2str($blade,$data = array())
    {
        $data['__env'] = app(ViewFactory::class);
        $str = Blade::compileString($blade);

        ob_start() and extract($data, EXTR_SKIP);
        try {
            eval('?>' . $str);
        }
        catch (\Exception $e) {
            ob_end_clean();
            throw $e;
        }
        $str = ob_get_contents();
        ob_end_clean();
        return $str;
    }

$blade 就是模板内容 $data就是要传的数据数组 记得use View\Factory

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!