在SilverStripe中,我有一个从控制器创建的表单中的textarea。
我想从生成的HTML中删除默认类class="textarea"
,而是使用类class="form_control"
。
如何在表单字段中删除和添加类,例如TextareField
?
TextareaField创建
$message = new TextareaField('Message', 'Message');
$message->addExtraClass('form-control');
$message->setAttribute('placeholder', 'Message (required)');
$message->setAttribute('rows', '5');
$message->setAttribute('cols', '25');
生成的HTML
<div id="Message" class="field textarea rounded">
<label class="left" for="Form_Form_Message">Message</label>
<div class="middleColumn">
<textarea id="Form_Form_Message" class="textarea" cols="20" rows="5" name="Message"></textarea>
</div>
</div>
答案 0 :(得分:2)
如果要从TextareaField中删除所有类,可以使用setAttribute
函数,第一个参数为'class'
,第二个参数包含要放入的类:
$message->setAttribute('class', 'form_control');
否则,如果您对保留'textarea'
类感到满意,可以使用addExtraClass
函数添加其他类:
$email->addExtraClass('form_control');
答案 1 :(得分:0)
我想最简单的方法是覆盖模板。
将/framework/templates/forms/TextareaField.ss
复制到您的mysite
文件夹,并使用$getAttribute()
手动添加每个必需属性(而不是依赖$AttributesHtml
):
<textarea class="form_control" cols="$getAttribute('cols')">$Value</textarea>