如何从SilverStripe表单中的textarea中删除默认类

时间:2014-09-09 07:00:57

标签: silverstripe

在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>

2 个答案:

答案 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>