【问题标题】:Twig include with dynamic dataTwig 包含动态数据
【发布时间】:2015-05-04 13:00:00
【问题描述】:

我正在使用 Slim Framework 和 Twig 编写一个网站。

网站上的侧边栏将动态创建链接,我想在每次呈现页面时从数据库/缓存中获取链接,我可以在每个控制器操作中执行此操作,但我想在我的基础中执行此操作模板,因此我不必在每个控制器操作中手动获取和呈现数据。

我查看了 twig 文档,除了包含函数/标签之外,我没有看到任何有用的东西,但我不知道如何轻松获取数据。

我唯一的选择是编写一个树枝扩展来做到这一点还是有更简单的方法?

【问题讨论】:

    标签: php twig slim


    【解决方案1】:

    首先:模板通常不应包含任何类型的业务逻辑,而仅呈现您提供的数据。 但是,您可以编写 custom twig function 并使用它从数据库中获取菜单数据,以便在您的基本模板中呈现它。 或者,您可以编写一些 Slim 中间件来获取可能能够将数据注入模板的数据。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      阅读 Anticoms 的回答后,我可以通过编写 Twig 扩展来做到这一点。

      public function getFunctions()
      {
          return array(
              new \Twig_SimpleFunction('render', array($this, 'render'))
          );
      }
      
      public function render($template, $controller, $action) {
          $app = Slim::getInstance();
          return $app->$controller->$action($template);
      }
      

      现在我可以简单地写了

      {{ render('Shared/sidebar.twig', 'Controller', 'Index') }}
      

      进入我的树枝模板,用我想要的数据渲染模板。

      请注意,我的 render() 函数使用苗条的依赖注入在运行时实例化控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-24
        • 2013-04-07
        • 1970-01-01
        • 2010-10-05
        • 2011-03-29
        • 2010-12-26
        相关资源
        最近更新 更多