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

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

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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 4
Summer

使用 render() 方法

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

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

7年前 评论
Summer

应该是这里出的问题:

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

不支持横杆

7年前 评论
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

6年前 评论

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