i'm using the forms api to modify some content edit forms. i have a custom field that is presented as radio buttons. i want them to display horizontally on one row, rather than vertically. is there an easy way to do that, or do i just need to hack it in with css in the form alter function?
thanks for any thoughts.
Comments
This sounds like something I would address with CSS in the theme.
If you are using the the forms API, I guess you are trying to do this in a custom module and looking for a way to do it in code?
I think you can accomplish what you're trying to do with the "container-inline" class, such as this:
$form['options']['status'] = array( '#title' => 'Status', '#type' => 'radios', '#options' => array( NODE_PUBLISHED => $node->nid ? t('Published') : t('Publish now'), NODE_NOT_PUBLISHED => t('Draft'), NODE_SCHEDULED => t('Schedule for later'), ), '#default_value' => $status, '#description' => t('Content saved as draft is only accessible to the content creator or site administrators.'), '#attributes' => array('class' => array('container-inline')), );This results in output such as:
Though it may be better to add your own unique CSS class instead and also attach a library or CSS file with the #attached property to style it. It depends if you feel you need further control beyond just getting them inline, because that will only set display: inline and nothing further.
thanks for the input, stpaultim and quicksketch. i did end up just adding some css via the forms api. i basically added #prefix and #suffix elements where i wrapped them in divs with display:inline. it took a little to figure out the right elements to target for best control, but i got it.
i will clean it up at some point and add my own classes via jquery, most likely. i've used the forms api over the yeas in drupal, but i never got fully comfortable with the complexity and repetitiveness of the render arrays. just at first glance, it looks to me like maybe backdrop has trimmed those arrays down a bit.
thanks again.