Задать вопрос

Как не плодить параметры в урле после повторных GET запросов через форму в Yii?

Здравствуйте! Помогите разобраться.

Есть сайт на yii с формой фильтров. Форма посылает get-запрос для фильтрации результатов выборки. При каждой отправки формы список параметров в урле браузера увеличивается.

Например, при первом выборе параметров и нажатии кнопки "Показать" - урл становится таким:

http://name_domain.ru/list/page1.html?CategoryFilterForm[proportions]=
&CategoryFilterForm[seria]=&CategoryFilterForm[seria][]=Кошки
&CategoryFilterForm[availability]=&yt1=Показать


При изменении фильтра (добавление/удаление параметров), список в урле параметров увеличивается на 1 набор параметров фильтра.

Например, при втором выборе параметров и нажатии снова кнопки "Показать" - урл такой:

http://name_domain.ru/list/page1.html?CategoryFilterForm[proportions]=
&CategoryFilterForm[seria]=&CategoryFilterForm[seria][]=Кошки
&CategoryFilterForm[availability]=&yt1=Показать
&CategoryFilterForm[proportions]=&CategoryFilterForm[seria]=
&CategoryFilterForm[seria][]=Кошки&CategoryFilterForm[seria][]=Собаки
&CategoryFilterForm[seria][]=Лошади&CategoryFilterForm[availability]=&
yt1=Показать


Причем, работает фильтр без проблем.

Форма во view формируется так:

$CategoryFilter = new CategoryFilterForm;
	
$ComformCategoryFilter = $this->beginWidget('CActiveForm', array(
												'id' => 'categoryfilter-form',
												'method' => 'get',
												'enableClientValidation' => true,
												'clientOptions' => array(
													'validateOnSubmit' => true,
												),
											));

Как очистить от устаревших параметров запроса урл или заставить форму не добавлять, а обновлять параметры?
  • Вопрос задан
  • 4435 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
dmeroff
@dmeroff
Вы должны вручную указать action для формы. Иначе форма отправляется на url, который содержит параметры предыдущих запросов.
Ответ написан
Комментировать
sorgo
@sorgo Автор вопроса
Спасибо! Так как фильтр работал на 2 акшиона в контроллере - добавил код разбора строки урла.

работает на урлах вида: name_domain.ru/сategory/list/page1.html

$CategoryFilter = new CategoryFilterForm;
	
	$path_url= explode("/", Yii::app()->request->requestUri);
	$path_url_last = explode(".", $path_url[3]);
		
	$ComformCategoryFilter = $this->beginWidget('CActiveForm', array(
												'id' => 'categoryfilter-form',
												'method' => 'get',
												'enableClientValidation' => true,
												'clientOptions' => array(
													'validateOnSubmit' => true,
												),
												'action' => array($path_url[1]."/".$path_url[2]."/".$path_url_last[0]),
											));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы