【问题标题】:Can I use twig in standalone project我可以在独立项目中使用树枝吗
【发布时间】:2019-05-12 05:41:55
【问题描述】:

我可以在独立项目中使用 twig 模板引擎吗,例如在 1000 个 html 页面上设计更多内容,即站点充满静态页面,如果您有任何简单的示例,我会感谢您

【问题讨论】:

标签: php twig


【解决方案1】:

我发现this Sitepoint tutorial 非常简单。我已经简化并总结了这些步骤:

它假定有基本的命令行和Composer 知识。

  • 安装 Twig - Composer可能对于大多数人来说是最简单的方法。在您的 docroot 中运行 composer require twig/twig。如果您还没有 composer.jsoncomposer.lock,这将创建一个 composer.lock 和一个 vendor 目录,Composer 将在其中下载 Twig 和它使用的几个 Symfony 依赖项。 Composer 还会生成一些自动加载文件。

  • 为您的 Twig 源文件创建一个 templates 目录(出于安全考虑,我个人喜欢将其放在 docroot 之上)

  • 在该目录中创建一个示例index.html.twig 模板
  • 创建一个bootstrap.php 文件(几行 PHP 来加载和初始化 Twig(并告诉它在哪里可以找到模板)
  • 创建一个index.php 文件来演示加载和解析模板。这个:
    • 加载引导程序
    • 定义一些数据(在一个数组中)以填充模板中的标签
    • 使用 Twig render() 方法,指定模板和数据数组

在浏览器中访问第二个 PHP 文件,您应该会得到一个渲染的 Twig 模板。

boostrap.php:

<?php

// Load our autoloader
require_once __DIR__.'/vendor/autoload.php';

// Specify our Twig templates location
$loader = new Twig_Loader_Filesystem(__DIR__.'/../templates');

// Instantiate our Twig
$twig = new Twig_Environment($loader);

index.php:

<?php

require_once __DIR__.'/bootstrap.php';

// Sample data
$foo = [
  [ 'name'          => 'Alice' ],
  [ 'name'          => 'Bob' ],
  [ 'name'          => 'Eve' ],
];

// Render our view
echo $twig->render('index.html', ['foo' => $foo] );

模板/index.html.twig:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Twig Example</title>
</head>
<body>

    <ul>
    {% for item in foo %}
        <li>{{ item.name }}</li>
    {% endfor %}
    </ul>

</body>
</html>

下一阶段是将您的 index.php 修改为适当的“前端控制器”,以便它可以处理多个模板。

本教程还提到了缓存生成的模板等内容。

【讨论】:

  • echo $twig-&gt;render('index.html', ['foo' =&gt; $foo] ); 为我工作
  • 如果您收到一条错误消息,指出 Twig 找不到 index.html,请使用 echo $twig-&gt;render('index.html.twig', ['foo' =&gt; $foo] );
【解决方案2】:

是的,您可以使用它。查看有关如何使用您的项目进行设置的文档。

http://twig.sensiolabs.org/doc/intro.html#installation

【讨论】:

【解决方案3】:

我今天确实试图找出它是如何工作的,因为官方文档并不完美...... 所以我找到了解决方案。

结构简单:

树枝/app/app.php
twig/vendor(在文档中使用 composer 创建) 树枝/views/page.html.twig


app.php:

<?php require_once '../vendor/autoload.php';

use Twig\Loader\FilesystemLoader;
use Twig\Environment;

$loader = new FilesystemLoader('../views/');

$twig = new Environment($loader);

echo $twig->render('page.html.twig', ['text' => 'Fabien']);

page.html.twig:

<h1>Hello {{ text }}</h1>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2013-08-07
    • 2019-06-08
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多