Drupal 7 - input form readonly and apply style

Daniel Diaz picture Daniel Diaz · Dec 19, 2012 · Viewed 8.8k times · Source

I need to apply style and read-only property to an input element of a drupal form. I coded the following:

$form['precio'] = array(
  '#type' => 'textfield',
  '#title' => t('Precio'),
  '#default_value' => ''.$precio,
  '#size' => 20,
  '#required' => TRUE,
  '#attributes' => array($inputAtributo => 1),
  '#description' => t('Modifica el precio '),
);

And at '#attributes' => array($inputAtributo => 1),

Before create form, I check if this input should be readonly and apply some style:

if ($tarifa !='' & $tarifa=='N')
$inputAtributo=" readonly style=\"background: none repeat scroll 0 0 #EAEAEA;\" ";
else
$inputAtributo = "";

This works, but I think it's not coded correctly

The html code shows the following:

<input id="edit-precio" class="form-text required" type="text" maxlength="128" size="20" value="258" name="precio" ="1"="" style="background: none repeat scroll 0 0 #EAEAEA;" readonly="">

How I can do this better?

Answer

mantish picture mantish · Dec 19, 2012

#attributes must be an array of key-value-pairs.

so the array should look like

'#attributes' => array(
    'readonly'=>'readonly',
    'style'=>'background: none repeat scroll 0 0 #EAEAEA;'
);