【问题标题】:Handling a common file between twig and php处理 twig 和 php 之间的公共文件
【发布时间】:2016-07-26 10:46:39
【问题描述】:

我有一个包含 php 和 twig 模板的网站。

我需要两个系统都使用一个通用的header.php 文件,该文件包含调用导航创建类的php。我无法将非 twig 文件转换为 twig,也看不到从 twig 范围内执行 php 的方法。

这会造成在与 twig 内容一起使用时头文件服务不正确的情况,因为 php 未执行并显示给用户。我有一套广泛且不断增长的 Twig 和 PHP 模板(不要问) - 将一个模板转换为另一个模板是不可能的。

对我如何处理这种情况有什么想法吗?

哦,这是基于 Slim 构建的。

编辑:

具体来说,这个 php 确定要使用的正确数据库连接,并包含一个单独的文件,该文件决定是使用缓存版本还是从数据库重新生成导航结构。

不是重复的 - PHP 模板不会执行 Twig 函数。

【问题讨论】:

  • Use PHP function in TWIG?的可能重复
  • 我不这么认为。通过使用 twig 函数,我会将问题转移到基于 php 的模板中,因为它们无法执行它。
  • 我什至不确定你为什么不使用 twig 作为所有输出。恕我直言twig 不应该关心它从哪里获取数据。它只需要接收和显示它。 Twig 不应该负责执行任何非输出的 php
  • 因为我不负责项目
  • 那你应该详细说明一下,提供一些你尝试过的代码

标签: php twig slim


【解决方案1】:

所以,我确实解决了这个问题。我意识到我可以通过使用 db 连接来区分 twig / php 源,这使我可以编写一个 twig 函数来处理这种情况并为这些上下文保留现有的 php 方法。

只是为了感兴趣,这是现​​在运行顺利的导航加载代码:

<!-- madness -->
                        <span style="display: none;">{% if 0 == 1 %}</span>
                        <?php
                        if (isset($this->db)) {
                            $pdo = $this->db;

                            require_once 'primary-navigation.php';
                        }
                        ?>
                        <span style="display: none;">{% endif %}</span>

                        <span style="display: none;"><?php if (0 == 1) { ?></span>
                            {{ loadNavigation(pdo) }}
                        <span style="display: none;"><?php } ?></span>

                        <!-- end of madness -->

每一行都是功能性和关键性的。数一数所有这些语言!

【讨论】:

    【解决方案2】:

    Twig 是 PHP 的视图模板引擎,带有Model–view–controller (MVC)

    MVC 的核心组件,模型,捕获 应用程序的问题域,独立于用户 界面。

    • 模型直接管理应用程序的数据、逻辑和规则。
    • 视图可以是信息的任何输出表示形式,例如图表。同一信息的多个视图是 可能,例如用于管理的条形图和用于管理的表格视图 会计师。
    • 第三部分,控制器,接受输入并将其转换为模型或视图的命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多