Добавить именованные параметры CakePHP в URL в списке выбора

Скажем, у меня есть список выбора следующим образом:

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

Как мне с помощью javascript/jQuery обновить страницу, когда пользователь выбирает язык, и добавлять параметры стиля именованных параметров в конец моего URL-адреса каждый раз, когда пользователь делает выбор, например, если пользователь выбирает немецкий, URL-адрес должен выглядит как:

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

Если пользователь выберет английский, URL будет:

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

Любая помощь очень ценится

Спасибо

2 ответа

Решение

В вашем js-файле прослушайте событие change для вашего select и создайте URL и перейдите к встроенному URL.

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

Измените ваш selectbox со значением по умолчанию, чтобы вы выбирали немецкий язык при каждом обновлении. Я скучаю, чтобы заметить, что каждое обновление по умолчанию является немецким, поэтому вы всегда получаете английский

<select name='languages'>
    <option>Select language</option>
    <option value='german'>German</option>
    <option value='english'>English</option>
</select>
$('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());
});
Другие вопросы по тегам