可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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');
回答1:
It'll work if you take those attribute names and lowercase'em.
回答2:
Try this:
$text = new Zend_Form_Element_Text('subject');
$text ->setAttrib('maxlength','100');
回答3:
Using the setAttrib will not affect the stringlength as that attribute is only recognised by text inputs. Try using a validator to control the string length. Note you can also set custom error messages.
$text = new Zend_Form_Element_Textarea( 'body' ); $text-> ->setLabel('Body:') ->setAttrib('cols', 50) ->setAttrib('rows', 4) ->addValidator('StringLength', false, array(40, 250)) ->setRequired( true ) ->setErrorMessages(array('Text must be between 40 and 250 characters'));
回答4:
I'm not an expert, but have you tried using lowercase attribute names? It's pretty tacky but if it works it suggests the language is broken in this respect.
回答5:
Generally it is good practice to add your form attributes in your fieldset class (or form class depending on how you have set it up).
Here is an example:
class SomeFieldSet extends Fieldset { /** * @var \Doctrine\Common\Persistence\ObjectManager * @access protected */ protected $objectManager; /** * @param ObjectManager $objectManager * @param SomeEntity $claimPrototype * @param null $name * @param array $options */ public function __construct( ObjectManager $objectManager, SomeEntity $somePrototype, $name = null, $options = array() ) { parent::__construct($name, $options); $this->objectManager = $objectManager; $this->setHydrator(new DoctrineObject($objectManager)); $this->setObject($somePrototype); } public function init() { $this->add( [ 'name' => 'description', 'type' => 'textarea', 'options' => [ 'label' => 'Some Label', 'instructions' => 'Some instruction', ], 'attributes' => [ 'class' => 'form-control', 'placeholder' => 'Some placeholder', 'required' => 'required', 'rows' => 10 ], ] ); }