如何在其中使用SEF表单URL并转义问号?

时间:2014-08-27 12:23:59

标签: php forms symfony symfony-forms

我使用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形式实现它?

2 个答案:

答案 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 }