【问题标题】:Pass dynamic value in URL with CakePHP使用 CakePHP 在 URL 中传递动态值
【发布时间】:2012-12-02 11:04:27
【问题描述】:

我有以下方法执行 Ajax 请求,传递从选择输入获得的一些动态值。

它工作正常,但动态值作为 URL 中的参数传递,类似于 states/listCities/?big_string_of_serialized_parameter

$this->Js->event(
    'change', 
    $this->Js->request(
        array( #url
            'controller' => 'states', 
            'action' => 'listCities'),
        array( # ajax options that generates the serialized parameter
           'update' => '#DealerCityId', 
           'data' => '$("#DealerStateId").serialize()',
           'dataExpression' => true
        )
    )
);

我正在尝试以更友好的 URL 方式执行此操作,例如 states/listCities/2

在 CakePHP 中可以使用来自输入的动态值生成像这样的友好 URL,还是只能将动态值作为参数传递?

【问题讨论】:

  • 我不知道 cakePHP,但基本上你在寻找服务器重写 url 规则而不是 php 脚本
  • @roasted,我知道如何“通过我的双手”做到这一点,但在这个问题上,我对 CakePHP 的做法很感兴趣。
  • 你为什么要美化只通过ajax访问的url?没有用。用户不会看到网址,为什么要在代码中添加额外的内容?
  • @ADmad 首先,仅出于好奇,是否可以这样做。其次,我认为处理友好 URL 中的参数会产生更简洁的代码,作为参数(至少在 CakePHP 中)。第三,也许有一天会有一个项目可以通过 Ajax 或“正常方式”访问某些 URL。它现在工作正常,但我只是在尝试改进。
  • 将参数作为查询字符串(即 GET)传递并没有什么不妥之处。如果你想要花哨的 url,请阅读 CakePHP 手册上的路由。 Cake 还具有“命名参数”功能,但它就像是查询字符串的专有版本。另外我建议你放弃 JsHelper 并自己编写 jquery 代码。

标签: php ajax cakephp


【解决方案1】:

据我所知,这是不可能的。您可以将 ID 作为 URL 数组中的第三个参数传递,但由于 ID 在模板生成时未知,因此在这种情况下不适用。如果你想使用JsHelper,你必须坚持使用它提供的 JavaScript 代码生成。

作为替代方案,您可以编写自己的 Helper:从 JsHelper 派生它并覆盖 request() 方法以满足您的需要。您可能可以先获取原始源代码的源代码,然后只修改data参数在代码生成中的使用方式。

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 2023-01-12
    • 2012-11-06
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多