我使用Symfony
表单构建器来过滤网上商店中的产品。所以当提交表单时,我得到的URL如下:
/category?vendor=apple+htc&price=500-1000
但我需要使用更多SEF URL
,如下所示:
/category/apple+htc/500-1000
或具有属性ID
/category/173-181-159-160
或者可能像哈希:
/category/21232f297a57a5a743894a0e4a801fc3
有什么更好用,我如何用Symfony
形式实现它?
答案 0 :(得分:1)
首先,查看更多代码(类别Action,formBuilder代码)会很有帮助。 如果没有代码,我假设您正在发送参数(如apple和htc)并在控制器中进行过滤。
如果您希望表单URL为SEF,则必须在表单操作属性中自行设置。 Symfony可以帮助您处理后端数据,而不是前端。您可以使用javascript进行动态action
设置。首先,将onChange事件附加到表单元素,并将更改的值发送到此函数:
function changeAction(phoneModel, priceRange){
//some logic to transform values of your form items to SEF url elements
document.getElementById('form_id').action = "/category/" + phoneModel +
+ "/" + priceRange;
}
提交表单后,它将被提交到您在表单action
中指定的网址。
答案 1 :(得分:1)
symfony路由有什么问题?
示例:
category:
pattern: /category/{vendor}/{price}/{other_params}
defaults: { _controller: AcmeNameBundle:Category, price: false, other_params: false }