Zend Form: How to set the length of a text input or textarea element?

Andrew picture Andrew · Dec 22, 2009 · Viewed 45.4k times · Source

By default Zend Form Text elements don't have a width specified. Textarea elements have a default of rows="24" and cols="80". But when I set a different value...

$body = new Zend_Form_Element_Textarea('body');
$body->setLabel('Body:')
    ->setRequired(true)
    ->setAttrib('COLS', '40')
    ->setAttrib('ROWS', '4');
$this->addElement($body);

...the attributes are only added, not changed:

<textarea name="body" id="body" COLS="40" ROWS="4" rows="24" cols="80">

What is the correct way to specify a width and height of a textarea element, and the column width of a text element?

Solution:

Apparently, you can't specify html attributes in capital letters or else it will add duplicate attributes.

To change the height and width of a text area element:

$textarea = new Zend_Form_Element_Textarea('body');
$textarea
    ->setAttrib('cols', '40')
    ->setAttrib('rows', '4');

To change the width of a text element:

$text = new Zend_Form_Element_Text('subject');
$text->setAttrib('size', '40');

Answer

Derek Illchuk picture Derek Illchuk · Dec 22, 2009

It'll work if you take those attribute names and lowercase'em.