gpt4 book ai didi

php - 使用友好 URL 提交 CakePHP 表单

转载 作者:可可西里 更新时间:2023-11-01 16:31:29 26 4
gpt4 key购买 nike

我必须在 CakePHP 应用程序中重写一个表单。该表单搜索汽车销售广告列表并且非常复杂(约 10 个字段:型号、制造商、燃料类型等)。目前,表格通过 POST 发送并且工作得很好。问题是我需要根据搜索查询创建可添加书签的 URL,我想知道完成此操作的最佳方法是什么。

我尝试通过 'type' => 'get'$form->create()方法,但这会生成类似 usercars/search/?model=...&[...] 的 URL并导致搜索中断。

我希望 URL 类似于 <some routing>/<Manufacturer>/<Model>/<Fuel>/<etc> ,并且还支持参数省略(即 <some routing>/<Manufacturer> 列出给定制造商的所有汽车,即使其他参数缺失)。通过 POST ,目前这有效。如果我只选择一个参数,它会给我正确的结果。

我想知道是否有任何方法可以确定 cake 从表单提交中构建漂亮的 url 并保持与 $this->data 的兼容性。在 Controller 中处理输入的方式。我已经阅读了文档,但没有找到任何方法来执行此操作。

我已经有两个选择:

  • 重写 Controller 操作以支持函数参数而不是使用 $this->data ,构建一个以参数搜索方法为目标的路由,并在 Controller 的 beforeFilter() 中进行重定向方法到与路由对应的 URL。
  • 在搜索表单页面上执行 javascript 以构建 URL + 上述处理方式。

你会推荐什么?

最佳答案

有一个内置的方法可以通过 cake 的命名参数来做到这一点。因此,如果您将链接结构化为

/controller/action/manufacturer:toyota/model:prius/

在您的 Controller 操作中,它们将作为关联数组在 $this->passedArgs 中可用,如下所示

Array
(
[manufacturer] => toyota
[make] => prius
)

另见:

http://book.cakephp.org/view/46/Routes-Configuration

这是一个使用原型(prototype)在提交时动态创建表单 url 的示例(使用原型(prototype))。

Event.observe(window, 'dom:loaded', function(e1)
{
$("formid").observe('submit', function(e)
{
this.select(".inputclass").each(function(input)
{
name = input.readAttribute('name')
val = name.match(/data\[.*\]\[(.*)\]/);

if(val && val[1])
{
name = val[1]
}

$("formid").action += "/" + name + ":" + $F(input);
});

return this.submit();
});
});

关于php - 使用友好 URL 提交 CakePHP 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com