【问题标题】:Which is better in Symfony2: render Controller or include Template?Symfony2 中哪个更好:渲染控制器还是包含模板?
【发布时间】:2015-08-21 11:30:50
【问题描述】:

我用 Symfony2 开发大学网站。此外,我几乎是 Symfony 的新手。

索引页面由几个块组成:新闻、事件、照片等。所有对象都是从网络服务中获取的,因此不直接使用数据库。

我想知道哪个更好:

  1. 在 DefaultController:indexAction 中获取所有新闻、照片、.. 对象 并将它们作为参数传递给 index.html.twig
  2. 在 index.html.twig 中调用 render(controller(News:block))。和 NewsController 依次获取对象并呈现 news_block.html.twig。
  3. 其他方式?..我实际上使用第二种方式,但我认为它不好。

请给我建议。

【问题讨论】:

  • 第二种方法让您可以在其他页面/位置重复使用块代码。
  • 取决于您的意见,但作为最纯粹的 Id,宁愿在控制器中处理所有数据操作并将其传递。如果应用程序很大或变大,处理起来会容易得多。

标签: php symfony model-view-controller twig


【解决方案1】:

这个问题不可能有完美的过时答案。这两种方式都是 Symfony 中同样标准的编码方式。它是一种非常重要的基于决策的方法。

  1. 获取 DefaultController:indexAction 中的所有新闻、照片、.. 对象并将它们作为参数传递给 index.html.twig -> 当您为页面显示/加载的数据相对较少或属于一个时单个模块/功能。这样你就有了一个简单的过程 - 路由 -> 控制器 -> 树枝。简单但甜蜜的编码方式。

  2. 在 index.html.twig 中调用 render(controller(News:block))。 NewsController 依次获取对象并呈现 news_block.html.twig。 -> 当您的树枝/页面呈现大量组件或需要在一个操作中进行大量繁重工作时,请使用此方法。这将极大地帮助您维护代码,因为您的树枝的每个部分都是使用单独的控制器单独呈现的。另外,这也会稍微提高站点的 UX 性能,因为树枝最初是用最少的信息呈现的,然后每个单独的组件使用自己的控制器单独呈现自己。

【讨论】:

  • 我被漫长的请求弄糊涂了:indexAction - index.twig - newsListAction - mews_block.twig。我想知道它是否可以更短。所以现在我明白了。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2014-05-23
  • 1970-01-01
  • 2019-07-23
相关资源
最近更新 更多