Форум русской поддержки Joomla! CMS |

23.04.2010, 20:28:59

Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь. Вам не пришло письмо с кодом активации? Войти

|  | Начало |  | Поиск | Joomla 1.5 FAQ | Joomla 1.0 FAQ | Правила форума | Новости Joomla | Войти | Регистрация | Помощь |

Все объявления
Яндекс Директ
Дать объявление

Надежный хостинг Новое оборудование, все необходимые опции включены. Тарифы от 50 руб! www.logol.ru |  | Увеличение продаж через Интернет Размещение рекламы, продвижение сайта. Скидки. Мини-сайт в подарок навсегда Адрес и телефон · www.expertprodazh.ru · Тольятти |  | Договорной документооборот Эффективная система договорного документооборота на базе MS SharePoint. www.korusconsulting.ru |  | Поисковое Продвижение от А до Я Поисковое продвижение сайта с нуля и без огромных вложений - DVD-курс... raskrutka.googold.ru

Страниц: [1] Вниз |

| Добавить закладку | Печать |

| Автор | Тема: Валидация форм средствами Joomla (Прочитано 2076 раз)
0 Пользователей и 1 Гость смотрят эту тему.

VETERINAR Живу я здесь Репутация: +162/-13 Offline Пол:
Сообщений: 1503
Kiss my shiny metal ass!

| Валидация форм средствами Joomla « : 26.05.2009, 15:40:18 » |

Кто ни будь разбирался как сделать в компоненте валидацию добавляемых данных, а точнее повесить обработчик события на кнопки "сохранить" и "применить"? Я смотрел код, который использует Joomla при добавлении контента, но там какой-то аццкий метод и не работает при использовании своего компонента. Пробовал на jquery вешать событие типа $("#adminForm").submit, но не срабатывает, т.к. Joomla сабмитит форму тоже через javascript и событие не возникает.
В общем кто как это разруливал?

| Записан

* JOOMLA 1.0.x FAQ * | * JOOMLA 1.5.x FAQ * | * Новости JOOMLA * | * Учебник по Joomla 1.0.x *

beliyadm Joomlapedia team Репутация: +1200/-48 Offline Пол:
Сообщений: 8706
Севастополь==Россия

| Re: Валидация форм средствами Joomla « Ответ #1 : 26.05.2009, 15:43:09 » |

Код

    JHTML::_('behavior.formvalidation');

и добавить в элемент формы класс required
Подключается стандартная фишка mootools

| Записан

Замороженные сиськи растревожили меня, замороженные сиськи очень странная фигня
-=Joomla FAQ=- || Работаем..с || Private Joomla Blog

VETERINAR Живу я здесь Репутация: +162/-13 Offline Пол:
Сообщений: 1503
Kiss my shiny metal ass!

| Re: Валидация форм средствами Joomla « Ответ #2 : 26.05.2009, 15:58:48 » |

Но не работает. Всё равно сабмитится без проверки. Ведутся раскопки.

« Последнее редактирование: 26.05.2009, 16:03:44 от VETERINAR » | Записан

* JOOMLA 1.0.x FAQ * | * JOOMLA 1.5.x FAQ * | * Новости JOOMLA * | * Учебник по Joomla 1.0.x *

vmir Захожу иногда Репутация: +3/-0 Offline Сообщений: 24

| Re: Валидация форм средствами Joomla « Ответ #3 : 31.05.2009, 17:39:16 » |

Обработчик вещается тривиально просто. Вот пример:
Код:

    <script language="javascript" type="text/javascript">
    function submitbutton(pressbutton) {
    	if (pressbutton == 'copy') {
    		if (document.adminForm.boxchecked.value == 0) {
    			alert("Вы забыли указать объект. Выберите объект из списка для копирования.");
    		}
    		else {
    			submitform('copy');
    		}
    	} else {
    		submitform(pressbutton);
    	}
    }
    </script>

В данном примере отлавливается событие нажатия кнопки copy. Если посетитель не выбрал ни одного элемента (document.adminForm.boxchecked.value == 0), то ему от ворот поворот. Ну а фактически можно проверять все что угодно в рамках javascript.

| Записан

VETERINAR Живу я здесь Репутация: +162/-13 Offline Пол:
Сообщений: 1503
Kiss my shiny metal ass!

| Re: Валидация форм средствами Joomla « Ответ #4 : 17.06.2009, 14:10:33 » |

Цитировать
Обработчик вещается тривиально просто. Вот пример
Это конечно здорово и работает в линейке 1.0, но топик лежит в разделе 1.5 и этот метод в 1.5 не работает, к сожалению.

| Записан

* JOOMLA 1.0.x FAQ * | * JOOMLA 1.5.x FAQ * | * Новости JOOMLA * | * Учебник по Joomla 1.0.x *

beliyadm Joomlapedia team Репутация: +1200/-48 Offline Пол:
Сообщений: 8706
Севастополь==Россия

| Re: Валидация форм средствами Joomla « Ответ #5 : 17.06.2009, 14:32:34 » |

Давай по порядку
Подключили стандартный файлик validate.js
Код

    JHTML::_('behavior.formvalidation');

В форме пишем (именно класс form-validate скажет скрипту что надо отработать данную форму)
Код

    <form action="" name="MyFormName" class="form-validate" method="post" >

Ну и собственно поля формы
Код

    <input name="pbform[fio]"  class="inputbox required" value="" />

Класс required говорит, что это поле просто обязательное, если добавить еще numeric - будет проверка на значение и так далее. Смотри media\system\js\validate.js на предмет наличия стандартных возможностей валидации и по желанию дописывай туда свои правила
И совсем забыл, для кнопки класс тоже надо указать
Код:

    class="button validate"

« Последнее редактирование: 16.07.2009, 14:56:47 от beliyadm » | Записан

Замороженные сиськи растревожили меня, замороженные сиськи очень странная фигня
-=Joomla FAQ=- || Работаем..с || Private Joomla Blog

x00xer Захожу иногда Репутация: +1/-0 Offline Сообщений: 55

| Re: Валидация форм средствами Joomla « Ответ #6 : 19.06.2009, 00:10:00 » |

А есть ли у Джумлы готовые класс(ы) для валидации на стороне сервера ??

| Записан

beliyadm Joomlapedia team Репутация: +1200/-48 Offline Пол:
Сообщений: 8706
Севастополь==Россия

| Re: Валидация форм средствами Joomla « Ответ #7 : 19.06.2009, 00:16:13 » |

Если посмотреть тот же компонент контактов, то в контроллере можно найти
Код

    		// Input validation
    		if  (!$this->_validateInputs( $contact, $email, $subject, $body ) ) {
    			JError::raiseWarning( 0, $this->getError() );
    			return false;
    		}

Оттуда и плясать, сам как то не задумывался, обычно свои обработчики использовал

| Записан

Замороженные сиськи растревожили меня, замороженные сиськи очень странная фигня
-=Joomla FAQ=- || Работаем..с || Private Joomla Blog

vmir Захожу иногда Репутация: +3/-0 Offline Сообщений: 24

| Re: Валидация форм средствами Joomla « Ответ #8 : 22.06.2009, 16:33:10 » |

Цитата: VETERINAR от 17.06.2009, 14:10:33
Это конечно здорово и работает в линейке 1.0, но топик лежит в разделе 1.5 и этот метод в 1.5 не работает, к сожалению.
Со стороны backend'а все работает, мануалы это подтверждают (http://docs.joomla.org/How_to_create_a_custom_button), уже не раз использовал этот прием в своем компоненте. Ну а по поводу frontend'а, можно сделать как пишут в мануалах http://docs.joomla.org/How_to_use_the_JToolBar_class_in_the_frontend. Про валидацию еще нашел вот это http://docs.joomla.org/Form_validation

| Записан

LOBsTerr Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 25
Вопрос?

| Re: Валидация форм средствами Joomla « Ответ #9 : 09.10.2009, 13:32:54 » |

свалидировать select пытался написать свой обработчик, но почему то он не хочет работать. Также пытался на онлоад как доках написано. Но селект игнорируется. посмотрел файл vakidate.js там проверяется тип input, submit, button. Попытался там добавить селект, опять же не работает. разобраться. Хочу чтобы значение выпадающих списков проверялось на больше нуля.
Код:

    this.setHandler('validate-select',
    			function (value) {
    				return (value > 0);
    			}
    		);

    		this.setHandler('password',
    			function (value) {
    				regex=/^\S[\S ]{2,98}\S$/;
    				return regex.test(value);
    			}
    		);

Заранее всем спасибо кто откликнется

| Записан

LOBsTerr Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 25
Вопрос?

| Re: Валидация форм средствами Joomla « Ответ #10 : 19.10.2009, 08:21:35 » |

Что неужели никто не сталкивался с подобными задачами, валидации выпадающих списков (селект). Или все делали дополнительную валидацию ?

| Записан

beliyadm Joomlapedia team Репутация: +1200/-48 Offline Пол:
Сообщений: 8706
Севастополь==Россия

| Re: Валидация форм средствами Joomla « Ответ #11 : 19.10.2009, 16:56:11 » |

http://www.chronoengine.com/forums/viewtopic.php?f=2&t=15812 - так как валидация в движке на motools то все должно работать

| Записан

Замороженные сиськи растревожили меня, замороженные сиськи очень странная фигня
-=Joomla FAQ=- || Работаем..с || Private Joomla Blog

LOBsTerr Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 25
Вопрос?

| Re: Валидация форм средствами Joomla « Ответ #12 : 20.10.2009, 00:01:18 » |

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

| Записан

Kler Новичок Репутация: +0/-0 Offline Сообщений: 1

| Re: Валидация форм средствами Joomla « Ответ #13 : 26.10.2009, 19:56:07 » |

Быть может данная статья поможет?
http://studiokler.ru/index.php/articles/1143-article - Валидация форм Joomla

| Записан

LOBsTerr Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 25
Вопрос?

| Re: Валидация форм средствами Joomla « Ответ #14 : 27.10.2009, 15:24:00 » |

Спасибо всем кто откликнулся.
2 Kler - Это просто перевод статьи из официальной документации. Но все равно спасибо.
И так вот решение. Есть два способа добавить свою функцию валидации.
1) пишем пользовательскую функцию для единичного случая. Я возьму свой пример и так у меня есть выпадающий спсисок:
Код:

    <select class="validate-select">
                <option value="0">Выберите из списка</option>
                <option value="1">1</option>
                <option value="2">2</option>
    </select>

Прописываем у него наш класс validate-select.
Подключаем библиотеку валидации :
Код:

    <?php JHTML::_('behavior.formvalidation'); ?>

Я хотел чтобы функция проверяла, что не стоит значение по умолчанию, проверяем значение на больше 0. Пишем следующую функцию:
Код:

    <script type="text/javascript">
    Window.onDomReady(
    function() {
        document.formvalidator.setHandler('select', function(value) {
            return value > 0;
    })
    }
    );
    </script>

Вот и все как оказалось все просто.
2) Но каждый раз писать эту функцию согласитесь не удобно, добавим нашу функцию в библиотеку validate.js
Открываем этот файл и после
Код:

    this.setHandler('email',
    			function (value) {
    				regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
    				return regex.test(value);
    			}
    		);

Добавляем наш метод:
Код:

    this.setHandler('select',
    			function (value) {
    				return value > 0;
    			}
    		);

Теперь прописав у любого селекта класс validate-select можно проверять на значение по умолчанию.
PS поменяйте тело функции и название префикса на нужное вам. Прошу не ругаться за столь разжеванное объяснение сделано специально для новичков, или для тех кто совсем не в курсе. Как всегда все оказалось просто, только нужна внимательность и аккуратность.

« Последнее редактирование: 29.10.2009, 21:02:33 от LOBsTerr » | Записан

shprota Разработчик расширений для Joomla 1.5 Репутация: +29/-1 Online Пол:
Сообщений: 525
Тружусь, не покладая рук

| Re: Валидация форм средствами Joomla « Ответ #15 : 29.10.2009, 09:53:46 » |

Цитата: VETERINAR от 17.06.2009, 14:10:33
Это конечно здорово и работает в линейке 1.0, но топик лежит в разделе 1.5 и этот метод в 1.5 не работает, к сожалению.
В 1.5 этот метод прекрасно работает, если что.

| Записан

Разработка дополнений, сайты под ключ

LOBsTerr Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 25
Вопрос?

| Re: Валидация форм средствами Joomla « Ответ #16 : 29.11.2009, 00:56:18 » |

Вот еще одна полезная модификация.
Я столкнулся с такой проблемой, что форма была у меня очень длинная (опрос в три экрана).
Так вот валидация формы проходила нормально, но у меня помечались поля, которые были в самом начале, т.е. пользователь их не мог видеть. И для пользователя складывалось такое ощущение, что кнопка сабмита просто не работает. Тогда я решил как то оповещать пользователя, что он сделал что-то не так. Откываем файл media/system/js/validate.js
Находим такой вот код строка 138 (может отличаться):
Код:

    // Run custom form validators if present
    		$A(this.custom).each(function(validator){
    			if (validator.exec()!= true) {
    				valid = false;
    			}
    		});

после него добавляем
Код:

    if (!valid) {
                        alert('Вы не заполнили все необходимые поля!');
                    }

PS поменяйте сообщение на свое. и теперь можно проверять

| Записан

viroff Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 43
потому что не все йогурты одинаково полезны...

| Re: Валидация форм средствами Joomla « Ответ #17 : 07.03.2010, 23:14:12 » |

Цитата: beliyadm от 17.06.2009, 14:32:34
Давай по порядку
Подключили стандартный файлик validate.js
Код

    JHTML::_('behavior.formvalidation');

В форме пишем (именно класс form-validate скажет скрипту что надо отработать данную форму)
Код

    <form action="" name="MyFormName" class="form-validate" method="post" >

Ну и собственно поля формы
Код

    <input name="pbform[fio]"  class="inputbox required" value="" />

Класс required говорит, что это поле просто обязательное, если добавить еще numeric - будет проверка на значение и так далее. Смотри media\system\js\validate.js на предмет наличия стандартных возможностей валидации и по желанию дописывай туда свои правила
И совсем забыл, для кнопки класс тоже надо указать
Код:

    class="button validate"

beliyadm - спасибо большое! Я вот как полчаса ищу про валидаторы форм, а тут ваше объяснение - здорово - кратко, доходчиво и понятно! Спасибо.

| Записан

viroff Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 43
потому что не все йогурты одинаково полезны...

| Re: Валидация форм средствами Joomla « Ответ #18 : 07.03.2010, 23:37:47 » |

Цитата: LOBsTerr от 27.10.2009, 15:24:00
Спасибо всем кто откликнулся.
2 Kler - Это просто перевод статьи из официальной документации. Но все равно спасибо.
И так вот решение. Есть два способа добавить свою функцию валидации.
1) пишем пользовательскую функцию для единичного случая. Я возьму свой пример и так у меня есть выпадающий спсисок:
Код:

    <select class="validate-select">
                <option value="0">Выберите из списка</option>
                <option value="1">1</option>
                <option value="2">2</option>
    </select>

Прописываем у него наш класс validate-select.
Подключаем библиотеку валидации :
Код:

    <?php JHTML::_('behavior.formvalidation'); ?>

Я хотел чтобы функция проверяла, что не стоит значение по умолчанию, проверяем значение на больше 0. Пишем следующую функцию:
Код:

    <script type="text/javascript">
    Window.onDomReady(
    function() {
        document.formvalidator.setHandler('select', function(value) {
            return value > 0;
    })
    }
    );
    </script>

Вот и все как оказалось все просто.
2) Но каждый раз писать эту функцию согласитесь не удобно, добавим нашу функцию в библиотеку validate.js
Открываем этот файл и после
Код:

    this.setHandler('email',
    			function (value) {
    				regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
    				return regex.test(value);
    			}
    		);

Добавляем наш метод:
Код:

    this.setHandler('select',
    			function (value) {
    				return value > 0;
    			}
    		);

Теперь прописав у любого селекта класс validate-select можно проверять на значение по умолчанию.
PS поменяйте тело функции и название префикса на нужное вам. Прошу не ругаться за столь разжеванное объяснение сделано специально для новичков, или для тех кто совсем не в курсе. Как всегда все оказалось просто, только нужна внимательность и аккуратность.
спасибо тебе! я вообще и не думал, что все ответы в одном месте лежат

| Записан

viroff Захожу иногда Репутация: +0/-0 Offline Пол:
Сообщений: 43
потому что не все йогурты одинаково полезны...

| Re: Валидация форм средствами Joomla « Ответ #19 : 28.03.2010, 03:13:57 » |

Цитата: shprota от 29.10.2009, 09:53:46
В 1.5 этот метод прекрасно работает, если что.
А работает только под зарегистрированным пользователем, или же при любом?? Просто сейчас проблема - если пользователь никакой (не админ, не автор...) то submitform не срабатывает... Подскажите путь к решению.
---- решено УЖАСНО, но работает. Ф-ции submitform и submitbutton прописал в коде вида (submitform просто скопировал!)

« Последнее редактирование: 31.03.2010, 19:59:18 от viroff » | Записан

Страниц: [1] Вверх |

| Добавить закладку | Печать |

Перейти в:

| Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC |

Все объявления
Яндекс Директ
Дать объявление

Надежный хостинг Новое оборудование, все необходимые опции включены. Тарифы от 50 руб! www.logol.ru |  | Увеличение продаж через Интернет Размещение рекламы, продвижение сайта. Скидки. Мини-сайт в подарок навсегда Адрес и телефон · www.expertprodazh.ru · Тольятти |  | Договорной документооборот Эффективная система договорного документооборота на базе MS SharePoint. www.korusconsulting.ru |  | Поисковое Продвижение от А до Я Поисковое продвижение сайта с нуля и без огромных вложений - DVD-курс... raskrutka.googold.ru

Загружается...