Модернизация RSForm

Тема в разделе "Модернизация расширений", создана пользователем DKraev, 14.07.2010.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Здравствуйте, господа.

    На сайте стоит RSForm. Возникла необходимость сделать проверку на минимальное количество символов. Т.е. если в поле "Имя" введено менее 2 символов - выводить предупреждение об ошибке.

    В стандартном функционале RSForm этого не предусмотрено. Но зато в админке предусмотрено поле дополнительных атрибутов и поле "Max Size" (добавляет maxlength к input). Посему, не мудрствуя лукаво, было решено maxlength при необходимости выводить при помощи дополнительных атрибутов, а переменную MAXSIZE использовать для своих целей.

    Было добавлено условие на проверку заполнения MAXSIZE и длину строки. Сделал следующим образом:

    Код (PHP):
    1. if (!is_array($data['MAXSIZE']) && strlen(trim($_POST['form'][$data['NAME']])) <= $data['MAXSIZE'])
    2.                 {
    3.                     $invalid[] = $data['componentId'];
    4.                     continue;
    5.                 }


    Т.е. если MAXSIZE указан и длина строки менее или равна значению MAXSIZE, выводить сообщение об ошибке. Все работает. НО!

    Делаю проверку для поля "Имя". Ранее в админке указал, что для этого поля количество символов должно быть не менее двух (MAXSIZE).

    Если вводить имя английскими буквами - условие приведенное выше срабатывает. Т.е. если я ввожу одну или две буквы - выдается сообщение об ошибке.

    Если имя вводить русскими буквами, то условие страбатывает частично. Т.е. если ввожу одну букву - сообщение об ошибке. Если ввожу две русские буквы, то проверка не происходит. Сообщение об ошибке не выводится... Но если в админке для MAXSIZE указать 4 - то проверка срабатывает корректно.

    Где я пролетел?

    Спасибо.
     
    Последнее редактирование: 14.07.2010
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    я бы сделал для проверки следующую вещь:
    сначала вывел бы strlen(trim($_POST['form'][$data['NAME']]))
    а потом $data['MAXSIZE']
    и посмотрел какие у них показатели

    это типа "дебуг моде" - так что ли назвать

    всё это через echo перед if
     
  4. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    А смысл? $data['MAXSIZE'] выводит цифру, которую я указываю в админке (минимальное количество символов)

    $str = $_POST['form'][$data['NAME']]; echo strlen($str); выводит разные значения. Если ввожу 2 английских символа - то выводит 2, как и положено. Если ввожу 2 русских символа - то выводит 4, естественно условие не срабатывает...

    Но это и так было понятно. Я как раз и хочу разобраться, почему так...
     
  5. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    а откуда у тебя берутся еще эти два лишних символа?
    посмотри чего тогда передаётся из формы, может где то там чего прибавляется если не латиницей написано

    я именно для этого предложил вывести перед сравнением, чтобы понять откуда ноги растут
     
  6. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Вот дурья башка, блин (это я про себя). Ставлю условие

    Код (PHP):
    1. if (!is_array($data['MAXSIZE']) && strlen(trim($_POST['form'][$data['NAME']])) <= $data['MAXSIZE'])


    Ну конечно же!!! strlen не работает с кириллицей в UTF-8. Отсюда и глюк...

    Нужно вот так:

    Код (PHP):
    1. if (!is_array($data['MAXSIZE']) && mb_strlen(trim($_POST['form'][$data['NAME']]), 'UTF-8') <= $data['MAXSIZE'])


    Ай, молодца, woojin, заставил подумать. Спасибо. А теперь я не могу тебе поставить плюс ))
     
  7. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    я по этому где получается сделать вывод там везде его делаю, в процессе разработки, т.к. нормального дебугера найти не смог - пример: как в дельфи, который мне все переменные показывает, как правильно настроить ECLIPS я чего то не понял, может конечно кто и подскажет буду очень признателен

    а по этому вопросу на к sourpuss он вроде чего то пытался доделать, тема называется + не ставится
     
    Последнее редактирование модератором: 31.03.2014
  8. Offline

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

    Регистрация:
    07.11.2012
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Всем привет.
    Надеюсь эта ветка еще жива...

    Вопрос по RSForm.

    Решил обхитрить жизнь... Форма в виде прайс-листа (название, чекбокс, количество)
    Прайс вогнал в таблицу базы данных.
    В php script написал откуда чего брать, куда вставлять, формировать... и т.д.

    Форму показывает, все красиво, чекбоксы и т.д

    Вопрос в следующем: Как эту красоту, которую юзер чекает в форме отправить мне на мыло? Где ковырять?

    ПС: joomla 1.5
    RSForm последний для этой версии джумла.

    Спасибо!
     
  9. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 206
    Симпатии:
    334
    Пол:
    Мужской
    насколько мне помнится там где то в настройках должна быть галочка или выпадающий список с возможностями формы
    в нём то и надо смотреть. чего она будет делать при нажатии на кнопку ОК, ОПРАВИТЬ, СОХРАНИТЬ (названия могут быть разные)
     
  10. Offline

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

    Регистрация:
    07.11.2012
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Решил расширить вопрос, т.с. добавить подробностей.

    Так форма выглядит в админке
    [​IMG]

    в Layout в код формы добавлено {my_data}
    [​IMG]

    В базе данных создана таблица прайса jos_price

    Сам php script выглядит так:
    [​IMG]

    Собственно на странице имеем результат:
    [​IMG]

    Шаблон имейла выглядит так:
    [​IMG]

    На мыло мне приходит то что в фигурных скобках.

    Вопрос: Как сделать так чтобы приходило то что почекано юзером в форме?
    Что нужно править (какую переменную), чтобы изменить вывод скрипта и добавить свои данные перед отправкой письма?
     
    Последнее редактирование: 07.11.2012
  11. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
  12. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Или может вообще лучше использовать iPrice? Он совмещает функции прайса, калькулятора + отправка заявки. Использую у себя на сайте для предварительного расчета стоимости. Демо - http://minimart.lotix.ru/ru
     
  13. Offline

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

    Регистрация:
    07.11.2012
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Собственно можно, просто тут больше 60-ти позиций... и я подумал, что можно подумать, как сделать форму быстрее. Помозговали с другом-программистом, итог вы видите. Если знать подробности обработчика RSFORM, то можно было бы добиться желаемого.

    Если кто знает каких файлах компонента можно поковырятся, подскажите....
     
  14. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Все таки на Вашем месте я бы не стал лезть в глубину кода RSForm, чтобы соединить два решения, а добавил бы эти 60 позиций отдельными полями в RSForm. Это будет быстрее.
     
  15. Offline

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

    Регистрация:
    07.11.2012
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Лучше день потратить, и за 5 минут долететь © :)

    На добавление чекбокса с полем ввода количества уходит нормально времени.
    Потом эту форму править нужно, убирать, добавлять. Проще с базой работать
     
  16. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Да, но в итоге страус все же добежал, а не долетел :)

    Хозяин - барин ;)
     
  17. Offline

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

    Регистрация:
    07.11.2012
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Потратил целый выходной. Ручками все сделал, каждую строчку. Провозился немного с цсс...
    Сделал шаблон письма, который приходит на мыло по кнопке отправить...
    В письме получаю ВЕСЬ список продукции из формы, %) ссылка на форму

    а очень хотелось получить лишь то что отметил юзер...
     
  18. Offline

    Владимир_ Недавно здесь

    Регистрация:
    03.12.2012
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день!
    Помогите разобраться с разделом "Scripts", программист из меня плохонький, но чувствую, что именно там то, что мне нужно. Смысл в том, чтобы сделать что то вроде "мастера" - выводить разные варианты для выбора пользователю, а выбранный им вариант включать в конечную форму, с возможностью вывода ее на печать.=O
     

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

Загрузка...