Symfony 共享模板内的自定义路由
假设我有两个控制器,它们使用同一个实体,并且使用同一组模板。每个模板都应该生成按钮/表单/链接,其中包含指向生成此模板的控制器操作的URL。所以基本上,模板中唯一不同的是生成的URL 您可以想象这个问题,就像一个带有Symfony 共享模板内的自定义路由,symfony,model-view-controller,twig,template-engine,Symfony,Model View Controller,Twig,Template Engine,假设我有两个控制器,它们使用同一个实体,并且使用同一组模板。每个模板都应该生成按钮/表单/链接,其中包含指向生成此模板的控制器操作的URL。所以基本上,模板中唯一不同的是生成的URL 您可以想象这个问题,就像一个带有newAction和editAction的管理CRUD控制器,它们使用相同的模板,但表单操作必须不同。不过,我的情况比那更复杂 我考虑了以下几点: 从控制器设置路由,但感觉有很多代码不合适 不同的模板集。看起来像是反干性的,并且有很多重复使用的代码 使用模板继承,其中基本模板是包含
newAction
和editAction
的管理CRUD控制器,它们使用相同的模板,但表单操作必须不同。不过,我的情况比那更复杂
我考虑了以下几点:
- 从控制器设置路由,但感觉有很多代码不合适
- 不同的模板集。看起来像是反干性的,并且有很多重复使用的代码
- 使用模板继承,其中基本模板是包含所有HTML的模板,子模板只包含链接,但感觉非常粗糙
{% set edit_cart_item = path('edit_cart_item') %}
{% set remove_cart_item = path('remove_cart_item') %}
...html...
<a href="{{ edit_cart_item }}">Edit item</a>
...more html...
{% extends 'MyCartBundle::cart.html.twig' %}
{% set edit_cart_item = path('public_edit_cart_item') %}
{% set remove_cart_item = path('public_remove_cart_item') %}
在所有奇特的OOP原则中,这个问题有更好的解决方案吗?实际上没有“聪明”的方法。为什么不直接使用指定的条令命令为您生成它,然后从那里开始呢
php应用程序/控制台生成:条令:crud
带有各种选项
这将使您以“适当”的方式完成坚实的基础,然后您可以执行自定义
编辑:
{% set edit_cart_item = path('edit_cart_item') %}
{% set remove_cart_item = path('remove_cart_item') %}
...html...
<a href="{{ edit_cart_item }}">Edit item</a>
...more html...
{% extends 'MyCartBundle::cart.html.twig' %}
{% set edit_cart_item = path('public_edit_cart_item') %}
{% set remove_cart_item = path('public_remove_cart_item') %}
在阅读了你的最新帖子后,我会看看以下内容:
因此,如果您愿意,可以通过将选项传递给表单,然后通过setAction()
设置目标来处理要显示的表单的逻辑:
通过设计,Symfony为您提供了很多灵活的操作方式。有关其最佳表单实践的参考资料,请参见:
我也觉得你现在做的很好。当我有复杂的表单案例时,我喜欢只为表单本身创建一个细枝模板,然后将其包含在我的其他模板中。在该模板中,如果您愿意,您可以将目标路由传递给它,然后您只需要一个表单模板。看不清楚问题所在,您可以输入一些代码吗?你的项目的这一部分的结构也是吗?它不是关于crud生成的,我的案例比这更复杂一些。检查编辑的问题:)