Добавить именованные параметры 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());
});