Форум русской поддержки Joomla!® CMS
09.12.2016, 11:46:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

[Решено] Использование встроенной в J3 recaptcha в собственных формах

 (Прочитано 165 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6460



« : 16.03.2016, 00:02:59 »

Собственно, сабж. Как?

Есть штатный тип поля captcha, но если его объявить в форме, то выводится он как простое текстовое поле. Что нужно для нормального вывода и функционирование CAPTCHA?
Плагин включен, ключи указаны, версия 2
« Последнее редактирование: 16.03.2016, 08:57:24 от b2z » Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #1 : 16.03.2016, 00:06:15 »

Странно. Должно выводится без танцев с бубном. В com_users же работает.

P.S.
У себя пока не приходилось использовать.
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6460



« Ответ #2 : 16.03.2016, 01:04:46 »

в com_users выводятся все поля в цикле, берутся из XML, может плагин срабатывает при как раз рендере из XML?
у меня в частности модуль, простая форма обратной связи
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6460



« Ответ #3 : 16.03.2016, 01:22:36 »

в общем, если понял правильно, поля, описанные в /libraries/cms/form/field/, рендерятся только изнутри JForm, который вызывается при построении форм в компонентах
если инпут прописывать в шаблоне вида напрямую, то поля из /libraries/cms/form/field/ не рендерятся

вопрос: как в модуле, без использования компонента, построить форму с использованием XML и JForm? или я в очередной раз изобретаю велосипед на 10 колесах?
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6460



« Ответ #4 : 16.03.2016, 02:19:36 »

Решение, найденное с помощью Istaan:

1) форма (тег form) должна обязательно иметь атрибут name

2) в шаблоне вида пишем:
Код
<?php
$captcha_plugin = JFactory::getApplication()->getParams()->get('captcha', JFactory::getConfig()->get('captcha'));
if (($captcha_field = JCaptcha::getInstance($captcha_plugin, array('namespace' => 'имя формы (содержимое атрибута name тега form)')))!= null)
echo $captcha_field->display('captcha', 'id поля', 'класс поля (необязателен)');
?>

3) там, где обрабатываем результаты формы (хелпер модуля в моем случае) пишем в самом начале, сразу после проверки сессионного токена:
Код
$captcha_plugin = JFactory::getApplication()->getParams()->get('captcha', JFactory::getConfig()->get('captcha'));
$captcha_result = JCaptcha::getInstance($captcha_plugin)->checkAnswer($input->getString('g-recaptcha-response'));
if (!$captcha_result) {
// тут вывод сообщения об ошибке
return;
}

Решено.
« Последнее редактирование: 16.03.2016, 02:23:58 от AlekVolsk » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet