Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1277 Просмотров
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Здравствуйте!
Перерыл кучу страниц в сети, но так и не нашел ни одного примера как такое реализовать.
Задача:
Простое текстовое поле и CAPTCHA -> Пользователь ввел данные -> Запись в БД -> Сообщение Ок!
Неужели для такой задачи нужен компонент?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Нет, не обязательно, можно обойтись модулем.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Капча то зачем?
интернет-блог: http://websiteprog.ru
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Нет, не обязательно, можно обойтись модулем.
Что должно быть в <input type="hidden" name="task" value=?
и в function ?()

В tmpl/default.php
Код: php
<form action="<?php echo JRoute::_('index.php');?>" method="post" id="mail-form" >
<fieldset>
<label for="mail"><?php echo JText::_('MOD_MAIL')?></label>
<input id="mail" type="text" name="usermail" class="inputbox"  size="14" />
<input type="submit" name="Submit" class="button" value="<?php echo JText::_('Go')?>" />
<input type="hidden" name="task" value="?" />
<?php echo JHtml::_('form.token'); ?>
</fieldset>
</form>
А в helper.php
function ?(){
тут insert...
}

*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Капча то зачем?
А как же спамеры?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Никакого task не будет, потому что компонента и, следовательно, контроллера нет. Напишите функцию в helper, которая срабатывает на наличие определенного параметра.

P.S. Фу, task - тоже параметр, вот и напишите функцию на определенное его значение.
[offtop] У меня дежавю - точно помню, что я уже писал такие слова. [/offtop]
« Последнее редактирование: 12.11.2015, 23:04:17 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
в шаблоне вида модуля
Код: html4strict
<form action="/" method="post" id="mail-form" enctype="multipart/form-data">
// тут ваши поля
<input type="hidden" name="option" value="com_ajax" />
<input type="hidden" name="module" value="modulename" /> // системное имя модуля без префикса mod_
</form>

в хелпере модуля
Код: php
class ModModulenameHelper // соблюсти имя
{
  public static function getAjax() // точное имя функции
  {
    // если нужно подключить языковые файлы модуля, то это обязательно
    $language = JFactory::getLanguage();
    $language->load('mod_modulename', JPATH_BASE, null, true);

    // получаете то, что возвращает форма
    $input = JFactory::getApplication()->input;

    // получаете параметры модуля
    $module = JModuleHelper::getModule('modulename');
    $params = new JRegistry();
    $params->loadString($module->params);

    // далее получаете данные из формы (они все в $input) и делаете необходимый запрос в базу, стандартным свособом
  }
}

капnча тоже будет в $input, но скорее всего, поскольку является плагином, она сработает еще до отправки данных в модуль
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
А как же спамеры?
А спамеров уже очень давно не беспокоит CAPTCHA..
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Вместо CAPTCHA есть не менее надежный способ:
в конец формы (перед </form>) добавляете
Код: php
<?php echo JHtml::_('form.token'); ?>

в хелпере самой первой строчкой в функции вставьте:
Код: php
if (!JSession::checkToken()) exit;
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
   <input type="hidden" name="option" value="com_ajax" />
Это  в Joomla 3 com_ajax
у меня пока 2.5
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Делайте, как я писал:
Код: php-brief
$task=JFactory::getApplication()->input->get('task');
if($task=='за#&ись'){
МойМодульХелпер::МояСуперФункция();
}
Не будь паразитом, сделай что-нибудь самостоятельно!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
у меня пока 2.5
тогда сори, я с 2.5 не работал, а вы похожи на динозавра (это юмор)
*

voland

  • Легенда
  • 11031
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Спасибо за помощь!
Юмористам особое...

Что получилось:
Helper.php
Код: php
class ModMailHelper
{
function getPost()
{
$task=JFactory::getApplication()->input->get('task');
if($task=='mail'){
$input = JFactory::getApplication()->input->get('usermail');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert($db->quoteName('#__table'));
$columns = array( $db->quoteName('email'));
$query->columns($columns);
$query->values($db->Quote($input));
$db->setQuery($query);
$db->query();
if ($query) { // Сообщение
JFactory::getApplication()->enqueueMessage(JText::_('SAVE'));}
}
}
}

default.php
Код: php
<form action="" method="post" >
<fieldset>
<label for="usermail"><?php echo JText::_('Введите Email')?></label>
<input id="usermail" type="text" name="usermail" class="inputbox"  size="14" />
<input type="submit" name="Submit" class="button" value="<?php echo JText::_('Отправить')?>" />
<input type="hidden" name="task" value="mail" />
</fieldset>
</form>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Подключение сторонних библиотек в модуле J4

Автор denism300

Ответов: 6
Просмотров: 348
Последний ответ 30.12.2022, 19:58:09
от denism300
Рекурсия в модуле

Автор alpha_ru

Ответов: 19
Просмотров: 1410
Последний ответ 20.07.2017, 19:25:11
от passer
[Решено] принудительно заполнить поле tags в плагине

Автор Sergeyy

Ответов: 5
Просмотров: 1178
Последний ответ 30.01.2017, 14:40:43
от Sergeyy
Дополнительное поле в модуле

Автор paskal

Ответов: 21
Просмотров: 2252
Последний ответ 27.08.2016, 00:59:55
от robert
Параноидальная защита формы

Автор zomby6888

Ответов: 2
Просмотров: 1147
Последний ответ 26.02.2016, 17:27:21
от zomby6888