13
A
回答
16
使用includes,您可以逐字包含整个模板。该模板可以访问当前在范围内的任何模板变量。
使用宏,您可以在Twig中定义一种函数(不要与Twig函数混淆,Twig函数可以访问其他应用程序逻辑,而不仅仅是传递给模板的数据),这些函数可以渲染给定的对象的特定组件。所以你可以有一个宏来呈现,比如购物清单,它将购物清单作为一个参数 - 然后你可以重用这个宏而不必担心是否将数据以相同的方式传递到了模板中。未明确传递给宏的变量不在该宏的范围内。
一个宏应该真的做一个特定的任务来获取一些数据并呈现一个可重用的组件。一个包含可以包含任何大块的东西 - 它更多取决于你。 Twig模板的工作方式的可扩展性与Smarty类似,意味着您可能会使用包含更少的设计 - 但仍然有一些用例可能会避免模板中的重复。
2
我是Symfony2的新手,但我认为树枝宏和包含的区别如下。
include:用于定义页面中的公共部分,如页眉,侧边栏或插槽。
宏:用于定义与视图相关的功能,如分页。
相关问题
- 1. Twig包括CSS或Java脚本
- 2. SAS宏包括警卫
- 3. 使用TWIG加载宏
- 4. 从PHP呈现Twig宏?
- 5. jsp包括vs jquery ajax
- 6. WiX包括vs片段
- 7. 摇篮排除VS包括
- 8. 联VS包括文件
- 9. 包括PHP的file_get_contents VS
- 10. 向前声明VS包括
- 11. PHP包括VS循环
- 12. PHP require vs grails包括
- 13. PHP包括VS include_once(速度)
- 14. jruby包括java类的性能vs包括一个包
- 15. LibreOffice包括一个过滤器宏
- 16. 将表导出为excel,包括宏
- 17. 宏更新包括页眉和页脚
- 18. 枝条标签包括vs功能包括
- 19. 客户端包括vs服务器端包括?
- 20. 在Twig中调用变量内的宏
- 21. 在Twig 2中测试宏的存在
- 22. 动态调用Twig中的宏?
- 23. 缺少包括从v4l2,Linux vs uapi/linux
- 24. 红宝石包括vs扩展
- 25. VS 2012与C++组包括/ lib
- 26. VS 2012问题gl/glut.h包括GLUT INSTALLED
- 27. PHP函数vs包括网站模板
- 28. 在Twig中调用另一个宏里面的宏
- 29. := VS在make宏=
- 30. 括号VS大括号
有关**模板的部分可以访问当前在范围内的任何模板变量**并不完全正确。你可以这样做:'{%include'template.html.twig'with {'custom_var':custom_value} only%}'这将阻止包含的模板访问父上下文。这将使'include'功能与'macro'非常相似,主要区别在于它们是如何声明和调用的。 – Karolis