【问题标题】:add cakephp named parameters to url on list select将 cakephp 命名参数添加到列表选择的 url
【发布时间】:2012-06-08 02:17:33
【问题描述】:

假设我有一个如下选择列表:

<select name='languages'>
    <option value='german'>German</option>
    <option value='english'>English</option>
</select>

当用户选择一种语言时,我如何使用 javascript/jQuery 刷新页面,并在每次用户做出选择时在我的 url 末尾添加一个 Named parameter style 参数,例如,如果用户选择德语,网址应如下所示:

http://my_app/my_controller/my_action/language:select_option_value_for_german

如果用户选择英文,则网址为:

http://my_app/my_controller/my_action/language:select_option_value_for_english

因此,每次用户进行选择时,都会刷新同一页面,并在 url 末尾添加命名参数。

注意:我希望命名参数在每个请求中只出现一次,换句话说,我不希望它们在 url 的末尾重复,例如:

http://my_app/my_controller/my_action/language:select_option_value_for_german/language:select_option_value_for_english

非常感谢任何帮助

谢谢

【问题讨论】:

    标签: php javascript jquery cakephp cakephp-1.3


    【解决方案1】:

    在您的 js 文件中监听您选择的更改事件并构建 url 并导航到构建的 url。

    $('select[name="languages"]').change(function(){
        var url ="/my_app/my_controller/my_action/language:" + $(this).val();
        window.location = url;
    });​​​
    

    使用默认值更改您的选择框,以便您在每次刷新时选择德语。我错过了注意到每次刷新默认都是德语,这就是为什么你总是得到英语

    <select name='languages'>
        <option>Select language</option>
        <option value='german'>German</option>
        <option value='english'>English</option>
    </select>
    

    【讨论】:

    • 不起作用,每次选择时命名参数都会在最后堆积,而且页面刷新后选择不会保留在列表中
    • 它适用于我使用 cake2.0 的测试。编辑了 url 部分的代码。
    • 问题是我使用$this-&gt;Html-&gt;url( null, true );获取当前url,之所以最后重复参数是因为每次请求时都包含在当前url中。有什么方法可以使用 cakePHP 或 PHP 函数或其他东西从 url 中删除参数,还是我必须使用正则表达式?
    • 似乎parse_url() 不适用于named 参数。您可以使用正则表达式
    【解决方案2】:
    $('select[name="language"]').on('change', function() {
        var pn = window.location.protocol +
                 window.location.hostname +
                 window.location.pathname +
                 window.location.hash;
        window.location.assign(pn + '?language=' + $(this).val());
    });
    

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2016-08-14
      • 2014-08-09
      • 2013-11-08
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      相关资源
      最近更新 更多