QuickForm 2 - конструктор форм с зависимыми полями и калькулятором

  • 583 Ответов
  • 20429 Просмотров

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

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
На последнем обновление слетели стили кнопки сабмит, вернее добавились из бутстрапа к прописанным мной в addstyle.css кастомным, хотя раньше корректно обрабатывал, стала как будто две кнопки и value "отправить" продублировалось. Откатился пока назад. Как пофиксить?

QuickForm выводит разметку, он не сделан с готовыми стилями, так, чтобы можно было поставить и не работать с ними. Пока, во всяком случае, не до стилей. Это функциональное решение динамической формы. А стили может написать любой. Что касается вашего случая, откуда мне знать, что у вас там за стили написаны.

Цитировать
calcCondition - по указанному id в related fields вызывается заранее заготовленный набор полей (пункт-блок) с селектами, намберами и пр. UI и математикой и calcCondition сравнивает сумму - s (в зависимости что в них выбрано) с заданным условием, и далее в зависимости от результата, в начале и конце этого блока-пункта можно вставить немного математики. Не формы (калькулятора) целиком, а именно этого блока-пункта-группы полей. Так ведь?

calcCondition включает группу полей, заключенную в нем, как include. А математику (собственных операндов), как if(). Если условие выполняется, то есть расчет математики в этой группе (внутри) это s, дает значение (без ошибки) и соответствует условию, тогда перед calcCondition (на входе) и после (на выходе) добавляются математические выражения. И весь этот блок с этими выражениями встраивается в результирующую математическую строку. Если условие не выполняется, тогда в математическую строку встраивается математика блока (включаемой группы полей) без этих дополнительных операндов.

Не знаю, как это еще проще объяснить, - когда простые вещи начинаешь объяснять подробно, они только усложняются. Самое точное объяснение есть в самом компоненте.

Цитировать
Все ломаю голову как сделать v*(a+b+c+n)+a1+b1+c1+n1..., где a и a1, b и b1, c и c1 выбираются одним пунктом из селекта? calcCondition не особо поможет?

Я не понимаю, где тут может возникнуть что-то сложное. Не вижу, где можно думать.


*

Оффлайн cntrl

calcCondition включает группу полей, заключенную в нем, как include. А математику (собственных операндов), как if(). Если условие выполняется, то есть расчет математики в этой группе (внутри) это s, дает значение (без ошибки) и соответствует условию, тогда перед calcCondition (на входе) и после (на выходе) добавляются математические выражения. И весь этот блок с этими выражениями встраивается в результирующую математическую строку. Если условие не выполняется, тогда в математическую строку встраивается математика блока (включаемой группы полей) без этих дополнительных операндов.

Не знаю, как это еще проще объяснить, - когда простые вещи начинаешь объяснять подробно, они только усложняются. Самое точное объяснение есть в самом компоненте.
- с этим как раз всё понятно.
Я не понимаю, где тут может возникнуть что-то сложное. Не вижу, где можно думать. У меня есть несколько селектов, каждый их пункт это два числа "a" и "b" числа "а" суммируются (a+a1+a2+a3)*v и умножаются на число полученное от пользователя -v, а уже после к производному прибавляется b+b1+b2 в зависимости от выбранных пунктов в селектах. вот как это сделать? может туплю, но не понимаю. я так могу сделать только последнее перед суммой поле  v*(a+a1+a2+a3)+b3 а еще надо прибавить b, b1 и b2.
« Последнее редактирование: 07.08.2017, 03:28:22 от cntrl »

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
- с этим как раз всё понятно.
Я не понимаю, где тут может возникнуть что-то сложное. Не вижу, где можно думать. У меня есть несколько селектов, каждый их пункт это два числа "a" и "b" числа "а" суммируются (a+a1+a2+a3)*v и умножаются на число полученное от пользователя -v, а уже после к производному прибавляется b+b1+b2 в зависимости от выбранных пунктов в селектах. вот как это сделать? может туплю, но не понимаю. я так могу сделать только последнее перед суммой поле  v*(a+a1+a2+a3)+b3 а еще надо прибавить b, b1 и b2.

В этом случае нужно разветвлять форму на каждом пункте селектов. Каждый выбор будет вести только в своем направлении. В итоге у вас получится много замыкающих групп полей, вида, +a3)+b+b1+b2+b3. Если четыре селекта и по два пункта в каждом, получится восемь концовок и шесть промежуточных групп полей. В каждой группе всего одно поле - следующий селект. В замыкающих группах он ссылается на одну и ту же группу, которая является продолжением формы, если оно есть. Либо ссылаться не с селекта, а добавить calcCondition.
« Последнее редактирование: 07.08.2017, 04:15:18 от varX »

*

Оффлайн cntrl

Тоже думал об этом, но у меня там по 6-10 пунктов в каждом селекте, голову сломать если еще ветвить. Придется искать компромиссное решение. Было бы неплохо сделать в компоненте модуль виртуальных переменных (зависмыми hidden полями которые можно вставить в обозначенное место), здорово помогло бы с математикой. Основной затык, что зависимые поля выводятся сразу после поля их вызывающего, вот можно былобы их выводить в определенном месте формулы?

Снова здравствуйте.
Несколько вопросов задам.

1. Как реализовать подсчёт, чтобы в последнем блоке дополнительные опции умножались на количество? К количеству уже привязаны цены за единицу.

2. Как сделать перевод некоторых строк для мультиязычного сайта? Добавляю customPHP, в него вставляю <?php echo JTEXT::_('QF_SUM'); ?>, в языковом файле добавляю QF_SUM="Рассчитанная стоимость составляет". И ничего.

3 Как отметить один из радиобоксов в списке checked-ом? (В этой форме радиобоксов нет, просто задумалась сегодня.)

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
Снова здравствуйте.
Несколько вопросов задам.

1. Как реализовать подсчёт, чтобы в последнем блоке дополнительные опции умножались на количество? К количеству уже привязаны цены за единицу.

2. Как сделать перевод некоторых строк для мультиязычного сайта? Добавляю customPHP, в него вставляю <?php echo JTEXT::_('QF_SUM'); ?>, в языковом файле добавляю QF_SUM="Рассчитанная стоимость составляет". И ничего.

3 Как отметить один из радиобоксов в списке checked-ом? (В этой форме радиобоксов нет, просто задумалась сегодня.)

1. Размещать дополнительные опции под каждым полем с количеством.
2. Выводится QF_SUM? Значит этот языковый файл не подгружается.
3. Первый радиобокс всегда checked.

*

Оффлайн cntrl

Где поковырять чтобы округлить до целых? нашел round в quickform.js там округляет до десятых, но как сделать не могу понять.

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
Где поковырять чтобы округлить до целых? нашел round в quickform.js там округляет до десятых, но как сделать не могу понять.

Такой возможности нет в компоненте. Если вы поменяете округление в js, тогда итоговая сумма не будет совпадать с суммой, которая получается при пересчете формы на сервере. Вы просто получите сообщение об ошибке и форма не будет отправлена. Это настройка безопасности и вы не сможете ее обойти.

1. Размещать дополнительные опции под каждым полем с количеством.
2. Выводится QF_SUM? Значит этот языковый файл не подгружается.
3. Первый радиобокс всегда checked.

1. Не могли бы подсказать, какие дополнительные опции нужно добавить? Я не понимаю.
2. Здесь разобралась. просто QF_SUM, без <?php echo...?> работает.
3. А когда нужен не первый? Нельзя сделать в настройках радиобоксов так же, как на чекбоксах - по произвольному выбору?

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
1. Не могли бы подсказать, какие дополнительные опции нужно добавить? Я не понимаю.
2. Здесь разобралась. просто QF_SUM, без <?php echo...?> работает.
3. А когда нужен не первый? Нельзя сделать в настройках радиобоксов так же, как на чекбоксах - по произвольному выбору?

1. Но это же ваши дополнительные опции?
2. А куда вы это вставляете?
3. Все можно сделать, но нужно делать.

*

Оффлайн cntrl

Такой возможности нет в компоненте.
Костылем то всегда можно сделать, поставить выводимую компонентом сумму в display:none, достать её js округлить и показать пользователю, по идеи ничего не нарушая или так работать не будет? Думал есть более элегантный способ.

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
Костылем то всегда можно сделать, поставить выводимую компонентом сумму в display:none, достать её js округлить и показать пользователю, по идеи ничего не нарушая или так работать не будет? Думал есть более элегантный способ.

Пока нет элегантного способа.

*

Оффлайн guliwer

Подскажите почему файл не загружается через форму, и кракозябры в пост запросе http://prntscr.com/g7lm0r
на сайте http://ru-portret.ru/ ссылка сделать заказ
познаю не опознанное!

*

Оффлайн varX

  • ******
  • 1591
  • [+]108 / [-]4
  • разработка компонентов
    • Просмотр профиля
Подскажите почему файл не загружается через форму, и кракозябры в пост запросе http://prntscr.com/g7lm0r
на сайте http://ru-portret.ru/ ссылка сделать заказ

Откуда мне знать. Нужно смотреть ваш сайт, разбираться. Пишите в поддержку, заказывайте работу.