Перейти к содержимому


Фотография
- - - - -

Как настроить Select Cascade?

select cascade

Лучший Ответ Denzel , 29 November 2013 - 12:47

Скорей всего jQuery Validation это то что нужно. Это мой первый опыт сайтостроения, а так я специализируюсь на winforms, где конечно же подобная задача решалась бы валидацией контролов. Буду премного благодарен если сможете подсказать ресурс или еще что, где в доходчивой манере (как у Вас в этой теме) расписано как решать подобные задачи через jQuery Validation.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 11

#1 Denzel

Denzel

Отправлено 27 November 2013 - 11:40

В фильтре использую один Select Cascade с двумя select-элементами.

 

Помогите решить задачу такую задачу: поиск должен выполняться только если выбрано конкретное значение. Выбор "- Все - " не допускается.

Я вижу два варианта:

1. Убрать из элементов значение "- Все -"

2. Поменять надпись "- Все -" на "Выберите значение..."

В обоих вариантах следует выводить ошибку если не выбрано конкретное значение.

 

Подскажите как можно добится такого поведения?


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 27 November 2013 - 16:59

Здравствуйте Откройте файл 

сайт\media\zoo\applications\jbuniversal\framework\helpers\jbhtml.php

Найдите функцию

public function selectCascade

В ней вы увидите такую строку

$html[] = '<option value=""> - ' . JText::_('JBZOO_ALL') . ' - </option>'; 

Именно она и выводит -все-

 

За комментируйте ее и тогда первым значением будет выводится уже непосредственно значение из параметра.

 

Получится если человек ни чего не выбрал будет применяться по умолчанию 1 значение а не пустота.


И тогда не придется ещё ломать голову что бы выводить ошибки.


  • 0
Изображение
 

#3 Denzel

Denzel

Отправлено 27 November 2013 - 21:21

Большое спасибо за совет. Действительно закоментировав эту строку в первом селекте по умолчанию отображается значение первого элемента. Но почему то при этом  во втором селекте отображается пустая строка и при его раскрытии отсутствует выбор элементов, т.е. он пустой. Причем если нажать кнопку поиска, то после обновления страницы видно что оба элемента заполнены корректно и у них выбраны первые значения и результат поиска соответствует этим критериям.

 

Если есть вариант, чтобы во втором селекте автоматом отображалось первое значение, а также заполнялся список вариантов, в соответствии с первым селектом, то это полностью решило бы мою проблему.


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 27 November 2013 - 22:17

Все таки 1 вариант не подойдет - нужно JS править самого JBZoo.

 

Вернемся ко второму. Есть идейка...

 

1. Разкомментируем обратно 

$html[] = '<option value=""> - ' . JText::_('JBZOO_ALL') . ' - </option>'; 

и добавим свою языковую константу

$html[] = '<option value="">' . JText::_('JBZOO_FILTER_SELECT_OPTION') . '</option>'; 

 

 

2. Открываем файл 

сайт\media\zoo\applications\jbuniversal\framework\helpers\jbassets.php

Ищем в нем

public function initJBCascadeSelect($uniqid, $itemList)

И меняем

"text_all" : " - ' . JText::_('JBZOO_ALL') . ' - "

на

"text_all" : "' . JText::_('JBZOO_FILTER_SELECT_OPTION') . '"

У нас получилось

be4882_200x0.png

 

 

 

3. Переходим в файл локализации

сайт\media\zoo\applications\jbuniversal\language\ru-RU\ru-RU.com_jbzoo.ini

и дописываем внизу

JBZOO_FILTER_SELECT_OPTION = "Выберите значение..."

Сохраняем. Надпись - Все - сменили


  • 1
Изображение
 

#5 Cheren-dow

Cheren-dow

Отправлено 27 November 2013 - 22:31

4. Открываем файл который отвечает за поиск

сайт\media\zoo\applications\jbuniversal\framework\controllers\search.php

в функции function filter() после

$document = JFactory::getDocument();
$document->setMetadata('robots', 'noindex, nofollow');

выведем паредаваемые значения фильтра и посмотрим на них

var_dump($_GET);

Мы увидим(в моем случае) что в моем селекте ни чего не выбрано

d2a9c4_200x0.png

 

И теперь что бы вывести ошибку о том что ни чего не выбрано нужно сделать проверку(в моем случае)

// делаем редирект на предыдущую страницу и выводим какое то сообщение
if(empty($_GET['e']['f056705e-3c01-4b72-9901-45c4176cc903'][0])){
	$this->setRedirect(htmlspecialchars($_SERVER['HTTP_REFERER']), 'Заполните какое то там поле');
}

И вот такой будет результат

d8156a_200x0.jpg

 

И вам остается ещё для одного параметра сделать проверку


  • 1
Изображение
 

#6 Denzel

Denzel

Отправлено 28 November 2013 - 13:14

Еще раз благодарю за высококлассную поддержку! Этот вариант то что нужно, правда у меня наблюдается нежелательный эффект. Если выбрать значение, назовем его "Значение 1" и произвести по нему поиск, а затем выбрать "Выберите значение..." и нажать поиск, то вместо ожидаемого сообщения я наблюдаю следующую картину:

- значение селекта вернулось на предыдущее значение - "Значение 1"

- выведены результаты поиска по "Значение 1"

- выведено сообщение "Заполните какое то там поле"

 

Т.е. помимо сообщение об ошибке значения селектов вернулись на предыдущие и по ним был произведен поиск с выводом результатов.

Можете помочь справится с таким эффектом?


  • 0

#7 Cheren-dow

Cheren-dow

Отправлено 28 November 2013 - 13:38

А можете ссылку на сайт дать что я не могу представить что там у вас.


  • 0
Изображение
 

#8 Denzel

Denzel

Отправлено 28 November 2013 - 14:08

К сожалению ссылку дать не могу, т.к. сайт делаю на локальном компьютере.

Сценарий прост:

1. Сделать поиск по любым установленным значениям (любые кроме "Выберите значение...").

2. На полученной странице результатов установить значения селекта в "Выберите значение..." и нажать поиск.

 

Ожидаемый эффект - сообщение об ошибке, т.к. значение не выбрано, при этом никаких результатов поиска быть не долджно и значение селекта по прежнему должно стоять на "Выберите значение...".

Наблюдаемый эффект - как описано выше: помимо сообщения произведен поиск по предыдущим условиям.


  • 0

#9 Cheren-dow

Cheren-dow

Отправлено 28 November 2013 - 14:31

Я вроде понял. Все дело в редиректе

$this->setRedirect(htmlspecialchars($_SERVER['HTTP_REFERER']), 'Заполните какое то там поле')

Вот эта штуковина

htmlspecialchars($_SERVER['HTTP_REFERER'])

Возвращает пользователя на предыдущую страницу.

Попробуйте поменять на конкретный адрес, например на редирект главной категории.


  • 0
Изображение
 

#10 Denzel

Denzel

Отправлено 29 November 2013 - 12:19

Поменял на ссылку ведущую на эту же страницу с фильтром. Теперь другая проблема. Как я говорил у меня один Select Cascade с двумя select-элементами. Так вот, если в первом выбрать значение, а во втором не выбирать и нажать поиск, то, как и ожидается, произойдет переход на эту же страницу с выводом сообщения об ошибке. Все как хотелось бы кроме одного: ранее установленное зхначение первого select-элемента сбрасывается на "Выберите значение..." Можно ли сделать так, чтобы значения селектов сохранялись и пользователю не приходилось бы их устанавливать по новому?

И попутно задам еще один вопрос. Во всех select-элементах по умолчанию отображается стандартное "Выберите значение...". Можно ли для каждого элемента самому определить текст этого значения? Т.е., в моем случае в первом элементе хотелось бы видеть "Укажите марку автомобиля...", а во втором - "Укажите модель автомобиля..."


  • 0





Темы с аналогичным тегами select cascade

Click to return to top of page in style!