FAQ SimpleForm / SimpleForm II: простые и функциональные конструкторы форм

Тема в разделе "Формы", создана пользователем shurikkan, 04.03.2014.

  1. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Модуль SimpleForm позволяет просто создавать модули с формами любой сложности со всеми распространёнными элементами ввода: input, select, checkbox, textarea, radio-button.

    Страница в каталоге JED: http://extensions.joomla.org/extensions/contacts-and-feedback/forms/16473

    Официальный сайт расширения: http://allforjoomla.ru/

    simpleform-demo-4.jpg

    Доступные атрибуты элементов:
    • type
      Определяет тип элемента. Возможные значения: text, textarea, select, radio, button, submit, reset, checkbox, captcha, file (елемент "file" добавлен в версии 1.0.1).
    • label
      Определяет поясняющую надпись возле элемента.
    • required
      Если значение этого атрибута равно "required", то заполнение данного элемента будет обязательным для пользователя.
    • regex
      Значением этого атрибута может быть регулярное выражение для проверки правильности заполнения элемента, у которого назначен этот атрибут.
    • error
      Значением этого атрибута может быть текст сообщения об ошибки вызванной незаплнением элемента, у которого определен этот атрибут и атрибут required имеет значение "required", либо введенные данные не прошли проверку регулярного выражения.
    • value
      Значение этого атрибута является значением элемента по-умолчанию.
    • class
      Если этот атрибут не пустой, то элементу будет задан CSS класс из значения этого атрибута.
    • multiple
      Данный атрибут может использоваться только в элементе с типом: select. Определяет можно ли выбрать несколько вариантов значений. Возможные значения: multiple.
    • selected
      Применяется только к элементам типа: select, radio и checkbox. Определяет, отмечен ли элемент по-умолчанию.
    • width
      Используется только в элементах типа: captcha. Определяет ширину изображения в пикселах. Возможные значения: целое число не менее 100.
    • height
      Используется только в элементах типа: captcha. Определяет высоту изображения в пикселах. Возможные значения: целое число не менее 50.
    • onclick
      Используется только в элементах типа: button, reset, checkbox. Определяет HTML атрибут onclick.
    • onchange
      Используется только в элементах типа: text, textarea, select. Определяет HTML атрибут onchange.
    • extensions
      Используется только в элементах типа: file. Определяет расширения файлов доступных для загрузки перечисленных через запятую. Например: gif, jpg, zip
    • maxsize
      Используется только в элементах типа: file. Определяет мексимальный размер загржаемого файла. Принимает значения в килобайтах и магабайтах. Например, чтобы задать максимальный размер загружаемого файла в 200 килобайт нужно написать: 200Kb. Для размера в 1 мегабайт: 1Mb.
    • color
      Используется только в элементах типа: captcha. Определяет цвет надписи в формате HEX. Если отсутствует - цвет генерируется случайным образом. (добавлен в версии 1.0.5)
    • background
      Используется только в элементах типа: captcha. Определяет цвет фона в формате HEX. Если отсутствует - цвет генерируется случайным образом. (добавлен в версии 1.0.5)

    Отличительная черта модуля - его простота и "лёгкость", по сравнению с известными конкурентами (перечисление будет некорректным :)).

    Модуль распространяется бесплатно, при условии сохранения копирайта разработчика. Для удаления копирайта можно перечистить на счёт разработчика 10$ - небольшая сумма для удобного модуля.

    P.S. Эта тема создана по просьбе разработчика сего хорошо себя зарекомендовавшего расширения. К сожалению, уже несколько месяцев автора никак не могут растолкать выпилить версию модуля для Joomla 3. Надеюсь, что появление этой темы его подбодрит!
     
    Последнее редактирование: 05.03.2014
    isay777, Masterocek, Asylum и ещё 1-му нравится это.
  2.  
  3. Offline

    ZyX Недавно здесь

    Регистрация:
    20.02.2010
    Сообщения:
    13
    Симпатии:
    1
    Пол:
    Мужской
    zazaka нравится это.
  4. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Крайне не хватает добавления суффикса класса к модулю.
    Как про такую штуку важную можно было забыть?? :)
     
  5. Offline

    ZyX Недавно здесь

    Регистрация:
    20.02.2010
    Сообщения:
    13
    Симпатии:
    1
    Пол:
    Мужской
    Вроде как есть она в настройках модуля :)
     
  6. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Точно. Ёлки-палки. Как я не увидел то?...
    --- добавлено: 02.06.2014, первое сообщение размещено: 23.04.2014 ---
    При добавлении в форму полей типа checkbox в Joomla 3 на странице с формой появляется ошибка.

    P.S.: Никак не появится комментарий мой про работу модуля на http://allforjoomla.ru/xmodules/mod-simpleform2 ...
     
  7. Offline

    ZyX Недавно здесь

    Регистрация:
    20.02.2010
    Сообщения:
    13
    Симпатии:
    1
    Пол:
    Мужской
    Сегодня залил новую версию модуля. Нововведения следующие:
    • Добавлена возможность указывать e-mail, на который будет отправляться ответ пользователя
    • В качестве значений для параметров "E-mail ответного письма" и "E-mail получателя" можно указывать имя элемента формы
    • Добавлена возможность задавать каждому элементу формы имя параметром "name". В качестве имени можно использовать только цифры и латинские буквы.
    • Данные об отправителе писем берутся из настроек сайта
    Скачать можно все там же: http://allforjoomla.ru/xmodules/mod-simpleform2
    Либо обновиться из администраторской панели сайта, если модуль у вас уже установлен.
    --- добавлено: 08.06.2014 ---
    Появляется не ошибка, а предупреждение (исправлено в версии 1.0.37). Легко лечиться отключением показа ошибок на сайте в настройках.
    Рекомендация всем читающим - всегда на продакшн сайтах отключайте показ ошибок. Пользователю они ни к чему, а недоброжелателю дают информацию не в вашу пользу.
    Поэтому рекомендую отключать показ ошибок, а на сервере включить логирование PHP ошибок без предупреждений и информации.
    Таким образом вы всегда сможете отследить ошибки скрипта и при этом не испортить внешний вид сайта пользователю, а также не дать дополнительной информации недоброжелателю.
     
    Последнее редактирование: 08.06.2014
  8. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Это понятно, но всё-таки приятнее когда ни фаталов, ни ворнингов, ни нотисов нету :)
     
  9. Offline

    ZyX Недавно здесь

    Регистрация:
    20.02.2010
    Сообщения:
    13
    Симпатии:
    1
    Пол:
    Мужской
    Согласен
     
  10. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    ВНИМАНИЕ!

    Если в своём шаблоне библиотека jQuery подключалась вручную (через обычный link в области head), не забывайте войти в настройки ВСЕХ добавленных ранее модулей SimpleForm II и установить в настройках:

    Подключить библиотеку jQuery: No

    К сожалению, включение настройки "Активировать безопасный режим jQuery" не решает вопрос конфликтов скриптов.
     
  11. Offline

    Masterocek Недавно здесь

    Регистрация:
    08.03.2015
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день столкнулся с такой проблемой при заполнении полей дата заселения и дата выезда на сайте все идет нормально, но при получении письма с сайта нет даты заселения и нет даты выезда уже все попробовал все равно не отображает даты в письме вод код формы:

    Код (html):
    1. <style type="text/css">form.simpleForm label{display:block;}form.simpleForm label span{color:#ff0000;}form.simpleForm input.inputtext{width:215px;}form.simpleForm textarea.inputtext{width:215px;height:100px;}form.simpleForm textarea.inputtext_small{width:215px;height:50px;}</style>{form}
    2. <p>{element label="Ф.И.О.: " type="text" required="required" error="Введите Ф.И.О." /}</p>
    3. <p>{element label="E-mail: " type="text" required="required" error="Введите вашE-mail" /}</p>
    4. <p>{element label="Телефон: " type="text" required="required" error="Введите ваш Телефон" /}</p>
    5. <p>
    6. {element label="Категория: " type="select"}
    7. {option label="Эконом" value="Эконом" /}
    8. {option label="Стандарт" value="Стандарт" /}
    9. {option label="Люкс" value="Люкс" /}
    10. {/element}
    11. </p>
    12. <p>
    13. {element label="Человек: " type="select"}
    14. {option label="1" value="1" /}
    15. {option label="2" value="2" /}
    16. {option label="3" value="3" /}
    17. {option label="3" value="3" /}
    18. {/element}
    19. </p>
    20. <p>{element label="Дата прибытия" /}
    21. <input type="date" name="date" required/></p>
    22. <p>{element label="Дата отбытия" /}
    23. <input type="date" name="date" required/></p>
    24. <p>{element type="submit" value="Отправить" /}</p>
    25. {/form}

    Просьба помогите разобраться что я не так делал
    _________
    ПРИ ВСТАВКЕ В СООБЩЕНИЕ КОДЫ ОБРАМЛЯЮТСЯ ТЕГАМИ !
     
    Последнее редактирование модератором: 22.03.2015
  12. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 054
    Симпатии:
    520
    Пол:
    Мужской
    Код (html):
    1. <p>{element label="Дата прибытия" /}
    2. <input type="date" name="date" required/></p>
    3. <p>{element label="Дата отбытия" /}
    4. <input type="date" name="date" required/></p>

    Атрибут измени, не применяй одинаковые имя инпутов
    Код (html):
    1. name="date_in"
    2. name="date_out"
     
  13. Offline

    Masterocek Недавно здесь

    Регистрация:
    08.03.2015
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    все равно ничего не поменялось вот да
    Код (html):
    1. <style type="text/css">form.simpleForm label{display:block;}form.simpleForm label span{color:#ff0000;}form.simpleForm input.inputtext{width:215px;}form.simpleForm textarea.inputtext{width:215px;height:100px;}form.simpleForm textarea.inputtext_small{width:215px;height:50px;}</style>
    2.  
    3. {form}
    4. <p>{element label="Ф.И.О.: " type="text" required="required" error="Введите Ф.И.О." /}</p>
    5. <p>{element label="E-mail: " type="text" required="required" error="Введите вашE-mail" /}</p>
    6. <p>{element label="Телефон: " type="text" required="required" error="Введите ваш Телефон" /}</p>
    7. <p>
    8. {element label="Категория: " type="select"}
    9. {option label="Эконом" value="Эконом" /}
    10. {option label="Стандарт" value="Стандарт" /}
    11. {option label="Люкс" value="Люкс" /}
    12. {/element}
    13. </p>
    14. <p>
    15. {element label="Человек: " type="select"}
    16. {option label="1" value="1" /}
    17. {option label="2" value="2" /}
    18. {option label="3" value="3" /}
    19. {option label="4" value="4" /}
    20. {/element}
    21. </p>
    22. <p>{element label="Дата прибытия" /}
    23. <input type="date" name=""date_in"" required/></p>
    24. <p>{element label="Дата отбытия" /}
    25. <input type="date" name="date_out" required/></p>
    26. <p>{element type="submit" value="Отправить" /}</p>
    27. {/form}
     
    Последнее редактирование модератором: 22.03.2015
  14. vyatka
    Offline

    vyatka Пользователь

    Регистрация:
    30.11.2010
    Сообщения:
    95
    Симпатии:
    5
    Пол:
    Мужской
    Отличный модуль, ИМХО.
    Для моих задач подошел идеально, за счет свободы в верстке вывода формы...
     
  15. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    Вот за это я его не люблю.
    --- добавлено: 22.03.2015, первое сообщение размещено: 19.03.2015 ---
    Почему имя поля два раза в кавычки взято?
    И вместо required попробуй вписать полный вариант: required="required"
     
  16. Offline

    yaka Недавно здесь

    Регистрация:
    29.04.2015
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте, помогите пожалуйста с такой проблеммой:
    Сайт работает на хостинге bitte.net.ua. На сайте не работает форма simple form 2, при обращении в службу потдержки получил такое сообщение:
    "В целях борьбы со спам рассылками на сервере были внесены изменения, которые запрещают отправку писем через функцию mail с почтовым ящиком отправителя, не созданном в аккаунте и не указанном в качестве отправителя в почтовых настройках сайта".
    Создал на хостинге почтовый ящик, подскажите пожалуйста где в форме simple form 2 можно указать почтовый ящик с которого необходимо отправлять сообщения.
    Спасибо.
     
  17. draff
    Offline

    draff Russian Joomla! Team Команда форума

    Регистрация:
    17.01.2011
    Сообщения:
    6 054
    Симпатии:
    520
    Пол:
    Мужской
    а в общих настройках Джумла указан почтовый ящик?
     
  18. Offline

    yaka Недавно здесь

    Регистрация:
    29.04.2015
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Спасибо за помощь, все заработало, указал настройки SMTP в общих настройках Joomla
     
  19. CB9T
    Offline

    CB9T Преподаватель по J! Команда форума

    Регистрация:
    21.05.2010
    Сообщения:
    2 464
    Симпатии:
    305
    Пол:
    Мужской
    Очень хочется увидеть в новых версиях HTML5 атрибуты.

    tel, date, email, url и многие другие...

    sjSOyfg.png BqcXnZz.png WSnbqYf.png


    Для этого в файле: simpleform2.class.php

    Добавьте новый код примерно с 180 строки:
    Код (PHP):
    1. function renderElement($elem){
    2.      $result = $elem->code;
    3.      $result = preg_replace("/{\/?element(.*?)(?=})}/i",'',$result);
    4.      $name = $elem->name;
    5.      $id = $elem->id;
    6.      $class = @$elem->class;
    7.      $default = @$elem->value;
    8.      $placeholder = @$elem->placeholder;
    9.      $label = '';
    10.      if($elem->label!='') $label = '<label for="'.$elem->id.'">'.$elem->label.($elem->required?' <span>*</span>':'').'</label> ';
    11.      switch($elem->type){
    12.        case 'text':
    13.          $onchange = @$elem->onchange;
    14.          if(count($elem->requests)) $default = $elem->requests[0];
    15.          $attribs = array();
    16.          $attribs[] = 'name="'.$name.'"';
    17.          $attribs[] = 'id="'.$id.'"';
    18.          if($class) $attribs[] = 'class="'.$class.'"';
    19.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    20.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    21.          $result.= '<input type="text" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    22.        break;


    После него уже свое:

    Код (PHP):
    1. case 'tel':
    2.          $onchange = @$elem->onchange;
    3.          if(count($elem->requests)) $default = $elem->requests[0];
    4.          $attribs = array();
    5.          $attribs[] = 'name="'.$name.'"';
    6.          $attribs[] = 'id="'.$id.'"';
    7.          if($class) $attribs[] = 'class="'.$class.'"';
    8.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    9.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    10.          $result.= '<input type="tel" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    11.        break;
    12.        case 'date':
    13.          $onchange = @$elem->onchange;
    14.          if(count($elem->requests)) $default = $elem->requests[0];
    15.          $attribs = array();
    16.          $attribs[] = 'name="'.$name.'"';
    17.          $attribs[] = 'id="'.$id.'"';
    18.          if($class) $attribs[] = 'class="'.$class.'"';
    19.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    20.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    21.          $result.= '<input type="date" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    22.        break;
    23.        case 'email':
    24.          $onchange = @$elem->onchange;
    25.          if(count($elem->requests)) $default = $elem->requests[0];
    26.          $attribs = array();
    27.          $attribs[] = 'name="'.$name.'"';
    28.          $attribs[] = 'id="'.$id.'"';
    29.          if($class) $attribs[] = 'class="'.$class.'"';
    30.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    31.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    32.          $result.= '<input type="email" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    33.        break;
    34.        case 'url':
    35.          $onchange = @$elem->onchange;
    36.          if(count($elem->requests)) $default = $elem->requests[0];
    37.          $attribs = array();
    38.          $attribs[] = 'name="'.$name.'"';
    39.          $attribs[] = 'id="'.$id.'"';
    40.          if($class) $attribs[] = 'class="'.$class.'"';
    41.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    42.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    43.          $result.= '<input type="url" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    44.        break;
    45.        case 'time':
    46.          $onchange = @$elem->onchange;
    47.          if(count($elem->requests)) $default = $elem->requests[0];
    48.          $attribs = array();
    49.          $attribs[] = 'name="'.$name.'"';
    50.          $attribs[] = 'id="'.$id.'"';
    51.          if($class) $attribs[] = 'class="'.$class.'"';
    52.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    53.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    54.          $result.= '<input type="time" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    55.        break;


    Результат для хромоподобных:
    I2KxHnU.png

    Для мобильных устройств Android + Ipad:

    iPdEBz1.png ZO18fxd.png 7m0826g.png huhCV9d.png lWrXNbd.png

    Также можете немного изменить вывод для телефона (он скорей всего будет только 1 раз на странице) - поле ввода:
    Код (PHP):
    1. case 'tel':
    2.          $onchange = @$elem->onchange;
    3.          if(count($elem->requests)) $default = $elem->requests[0];
    4.          $attribs = array();
    5.          $attribs[] = 'name="'.$name.'"';
    6.          $attribs[] = 'id="'.$id.'"';
    7.          if($class) $attribs[] = 'autofocus class="'.$class.'"';
    8.          if($onchange) $attribs[] = 'onchange="'.$onchange.'"';
    9.          if($placeholder) $attribs[] = 'placeholder="'.$placeholder.'"';
    10.          $result.= '<input type="tel" '.implode(' ',$attribs).' value="'.htmlspecialchars($default).'" />';
    11.        break;


    autofocus - Автоматически устанавливает фокус в поле формы. В таком поле можно сразу набирать текст без явного щелчка по нему курсором мыши. + магия HTML5

    Далее обязательно добавить новые аттрибуты ниже, иначе они будут на frontend - но на почту не будут приходить.

    Примерно 1017 строка:

    Код (PHP):
    1. function check(&$form,$request){
    2.  
    3.      $checkVal = $this->getParam($request,$this->name,null);
    4.  
    5.  
    6.      if(in_array($this->type,array('text','tel','date','email','url','time','textarea'))){
    7.  
    8.        $checkVal = trim($checkVal);
    9.  
    10.        if(($this->required&&$checkVal=='')||($this->regex!=''&&!preg_match($this->regex,$checkVal))){
    11.  
    12.          $this->setError($this->error);
    13.  
    14.          return false;
    15.  
    16.        }
    17.  
    18.        $this->requests[] = $checkVal;
    19.  
    20.      }
     
    Последнее редактирование: 25.05.2015
    vuslyk и shurikkan нравится это.
  20. shurikkan
    Offline

    shurikkan Russian Joomla! Team Команда форума

    Регистрация:
    01.09.2011
    Сообщения:
    1 856
    Симпатии:
    162
    Пол:
    Мужской
    @CB9T - молодец.
    @ZyX, глянь как работает и выкладывай обновление?? ;)
     
  21. Offline

    zazaka Недавно здесь

    Регистрация:
    04.07.2016
    Сообщения:
    1
    Симпатии:
    0
    Пытаюсь настроить вашу форму.
    Задал все поля. Форма отображается.
    Но после нажатия кнопки отправить - не появляется сообщение то что я ввел в админке в поле "Текст после обработки формы" и всё что я ввел в полях отстается (поля не очищаются) - сообщение на почту с заполненной формы приходит.
    из за чего может не появлятся сообщение после обработки формы, куда копать?
     

Поделиться этой страницей

Загрузка...