Автор Тема: маска ввода  (Прочитано 417 раз)

26 Апрель 2021, 12:26:41
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ребят, пытаюсь вставить маску в поле деня рождения.
Форма:
        {block name='form_field_item_birthday'}
          <div class="js-parent-focus">
            {html_select_date
field_order=DMY
            time={$field.value}
            field_array={$field.name}
            prefix=false
            reverse_years=true
            field_separator='<br>'
            day_extra='class="form-control form-control-select"'
            month_extra='class="form-control form-control-select"'
            year_extra='class="form-control form-control-select"'
            day_empty={l s='-- day --' d='Shop.Forms.Labels'}
            month_empty={l s='-- month --' d='Shop.Forms.Labels'}
            year_empty={l s='-- year --' d='Shop.Forms.Labels'}
            start_year={'Y'|date}-100 end_year={'Y'|date}
            }
          </div>
        {/block}

Куда вставить?
placeholder="dd.mm.yyyy" data-slots="dmyh"

26 Апрель 2021, 14:23:01
Ответ #1
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот французы навернули.... нашел форму в classes

        if ($this->ask_for_birthdate) {
            $format['birthday'] = (new FormField())
                ->setName('birthday')
                ->setType('text')
                ->setLabel(
                    $this->translator->trans(
                        'Birthdate',
                        [],
                        'Shop.Forms.Labels'
                    )
                )
->addAvailableValue('placeholder', 'dd.mm.yyyy')
                ->addAvailableValue(
                    'comment',
                    $this->translator->trans('(E.g.: %date_format%)', ['%date_format%' => Tools::formatDateStr('31 May 1970')], 'Shop.Forms.Help')
                )
->setRequired(true);
        }

placeholder подредактировал, только теперь как туда впихнуть значение data-slots="dmyh"?

26 Апрель 2021, 15:20:18
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Добавить еще
->addAvailableValue(data-slots, ...
26 Апрель 2021, 20:30:52
Ответ #3
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
->addAvailableValue передает значение только 1 раз, если более одного - берет последнее.
27 Апрель 2021, 11:40:25
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне customer-form.tpl можно добавить
{foreach from=$formFields item="field"}
{block "form_field"}
{if $field.name == 'birthday'}
                        ....
                        data-slots="dmyh"
27 Апрель 2021, 13:20:29
Ответ #5
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавить в какой части?
Можно подробней.... здесь (ПШ 1.7.7.3)?
    public function getTemplateVariables()
    {
        return [
            'action' => $this->action,
            'urls' => $this->urls,
            'errors' => $this->getErrors(),
            'hook_create_account_form' => Hook::exec('displayCustomerAccountForm'),
            'formFields' => array_map(
                function (FormField $field) {
                    return $field->toArray();
                },
                $this->formFields
            ),
        ];
    }
27 Апрель 2021, 14:01:15
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблон /themes/classic/templates/_partials/form-fields.tpl
27 Апрель 2021, 15:37:32
Ответ #7
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Прикол в том, что если вообще снести весь этот код с form-fields.tpl:
      {elseif $field.type === 'birthday'}

        {block name='form_field_item_birthday'}
          <div class="js-parent-focus">
            {html_select_date
            field_order=DMY
            time={$field.value}
            field_array={$field.name}
            prefix=false
            reverse_years=true
            field_separator='<br>'
            day_extra='class="form-control form-control-select"'
            month_extra='class="form-control form-control-select"'
            year_extra='class="form-control form-control-select"'
            day_empty={l s='-- day --' d='Shop.Forms.Labels'}
            month_empty={l s='-- month --' d='Shop.Forms.Labels'}
            year_empty={l s='-- year --' d='Shop.Forms.Labels'}
            start_year={'Y'|date}-100 end_year={'Y'|date}
            }
          </div>
        {/block}

То блок <input class="form-control" name="birthday" value="00.00.0000" placeholder="dd.mm.yyyy" required="" type="text">
все равно остается.
28 Апрель 2021, 21:37:24
Ответ #8
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это конечно треш - чтобы в пш 1.7 добавить маску ввода нужно видать ядро перекраивать....
04 Май 2021, 17:56:46
Ответ #9
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вернулся к этой теме, ребят, ну кто-то же делал маску, хоть на тел... или все на 1.6 сидят )

Нашел инфо о формах в доках:

https://devdocs.prestashop.com/1.7/modules/concepts/forms/
05 Май 2021, 11:20:17
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вот французы навернули.... нашел форму в classes

        if ($this->ask_for_birthdate) {
            $format['birthday'] = (new FormField())
                ->setName('birthday')
                ->setType('text')
                ->setLabel(
                    $this->translator->trans(
                        'Birthdate',
                        [],
                        'Shop.Forms.Labels'
                    )
                )
->addAvailableValue('placeholder', 'dd.mm.yyyy')
                ->addAvailableValue(
                    'comment',
                    $this->translator->trans('(E.g.: %date_format%)', ['%date_format%' => Tools::formatDateStr('31 May 1970')], 'Shop.Forms.Help')
                )
->setRequired(true);
        }

placeholder подредактировал, только теперь как туда впихнуть значение data-slots="dmyh"?
Вот так маску ввода добавляет.
В чем проблема?
05 Май 2021, 12:19:00
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
->addAvailableValue передает значение только 1 раз, если более одного - берет последнее.
Это не так, заблуждаетесь.
Метод addAvailableValue добавляет переменную и значение множество раз, можно добавлять любую переменную шаблона и инициализировать.
Смотрите приложенный файл.
05 Май 2021, 17:33:18
Ответ #12
  • Новичок
  • *
  • Сообщений: 27
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, перепроверю...