SilverStripe CreditCardField 错误 html 和提交错误

SilverStripe CreditCardField bad html and submission error

我有一个表格,没有它也能正常工作,但是当我添加

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

显示同名、id等属性的信用卡字段。当我提交它时,验证会抛出一个错误,因为它需要一个数组,但只得到最后 4 位数字的字符串。

我是否正确创建了这个字段?我假设一旦我解决了显示问题,它就会解决验证问题。

我对这个字段类型不是很熟悉,但是你可以从it's template看到它不希望能够设置占位符:

<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、名称、值和tabindex。出于某种安全原因,占位符可能会被故意省略,或者它可能只是一个缺失的功能。

您最好的选择可能是使用 some javascript 代替:

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

所以我 logged a ticket 的模板中存在错误。目前的解决方法是您必须拥有自己的 CreditCardForm.ss 模板,该模板使用 $getAttributesHTML 而不是 $AttributesHTML