【问题标题】:Using Twig in Laravel 5 without TwigBridge?在没有 TwigBridge 的 Laravel 5 中使用 Twig?
【发布时间】:2015-07-29 05:22:51
【问题描述】:

我正在使用 Laravel 创建一个 CMS。我想在“页面模板”中使用 Twig 标记——用户可以编辑这些标记并存储在数据库中。 CMS 应用程序仍将使用 Blade。

我不想使用 TwigBridge,因为据我了解,它会迫使我在所有事情上都使用 Twig。例如,在 TwigBridge 文档中是状态:

您可以像调用任何其他视图一样调用 Twig 模板:

// 没有文件扩展名

查看::make('i_am_twig', [...])

相反,我希望我的视图继续使用刀片模板,但使用 Twig 来解析用户可编辑的页面模板。也许它看起来像这样:

Twig::make('i_am_twig', [...])

这可能吗?非常感谢您提供分步说明!

我知道有些人可能会建议我只选择一个:对所有东西都使用刀片模板或树枝模板。但是,请不要在这里进行辩论。

【问题讨论】:

    标签: laravel twig


    【解决方案1】:

    这并不完美,但我会将其作为占位符发布,直到出现更好的答案。我还不太熟悉 Laravel 包,否则我会走那条路。我是这样做的:

    第 1 步:在 composer.json..

    将 "twig/twig": "~1.0" 添加到要求部分:

    "require": {
        "laravel/framework": "5.0.*",
        "twig/twig": "~1.0"            <=========== add this
    },
    

    还有自动加载部分:

    "autoload": {
        "classmap": [
            "database",
            "app/Models",
            "app",
            "database/seeds",
            "vendor/twig/twig/lib/Twig/Autoloader.php"   <==== add this             
        ],
    

    第 2 步:更新 Composer:

    > sudo composer update
    > composer dump-autoload
    

    步骤#3:创建以下文件夹/文件:/resources/views/twig/hello.html

    Well hello everyone!
    

    第 4 步:渲染模板:

        \Twig_Autoloader::register();
    
        $loader = new \Twig_Loader_Filesystem(app_path() . '/../resources/views/twig');
        $twig = new \Twig_Environment($loader);
    
        echo $twig->render('hello.html', array('debug' => true));
    

    【讨论】:

    • 你最后是怎么做的?我正在考虑使用电子邮件和 CMS 内容做类似的事情。有什么问题吗?设法从字符串中渲染它?
    • @Wizzard:我最终放弃了那个架构并开始使用十月 CMS。我永远无法弄清楚如何让 Twig 从字符串中渲染。根据我在网上查到的情况,没有办法不破解 Twig 本身,这似乎很复杂。
    • 有趣...我看到了这个并认为它可以完成这项工作; techpunch.co.uk/development/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多