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
我有一个表格,没有它也能正常工作,但是当我添加
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