SilverStripe CreditCardField плохой HTML и ошибка отправки

У меня есть форма, которая прекрасно работает без нее, но когда я добавляю

CreditCardField::create('CreditCard','Credit Card')->setAttribute('placeholder', '0000')

он отображает поле кредитной карты с тем же именем, идентификатором и другими атрибутами. Конечно, когда я отправляю его, проверка выдает ошибку, поскольку ожидает массив, но получает только строку из 4 последних цифр.

Я правильно создаю это поле? Я предполагаю, что, как только я исправлю проблемы с отображением, это исправит проблемы с проверкой.

0

Решение

Я не очень знаком с этим типом поля, но вы можете видеть из это шаблон что он не может установить заполнитель:

<span id="{$Name}_Holder" class="creditCardField">
<input $AttributesHTML('id', 'name', 'value', 'tabindex') name="{$Name}[0]" value="{$ValueOne}" $TabIndexHTML(0)/>
-
<input $AttributesHTML('id', 'name', 'value', 'tabindex') name="{$Name}[1]" value="{$ValueTwo}" $TabIndexHTML(1)/>
-
<input $AttributesHTML('id', 'name', 'value', 'tabindex') name="{$Name}[2]" value="{$ValueThree}" $TabIndexHTML(2)/>
-
<input $AttributesHTML('id', 'name', 'value', 'tabindex') name="{$Name}[3]" value="{$ValueFour}" $TabIndexHTML(3)/>
</span>

Атрибуты, которые вы можете установить: ID, имя, значение и индекс табуляции. Заполнитель может быть пропущен намеренно по какой-либо причине безопасности, или это может быть просто отсутствующая функция.

Ваш лучший выбор может быть использовать некоторый JavaScript вместо:

$('#MyCreditCard_Holder').find('input').attr('placeholder', '0000');
1

Другие решения

Таким образом, есть ошибка в шаблоне, который я зарегистрировал билет за. Обходной путь для этого на данный момент — у вас должен быть свой собственный шаблон CreditCardForm.ss, который использует $getAttributesHTML скорее, чем $AttributesHTML

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector