I achieved this with my custom view helper:
?php
/**
* Select with custom css helper.
*
* @package Forms
* @author Sasa Stamenkovic umpir...@gmail.com
*/
/**
* Select brand helper, options class customization.
*
* @package Forms
*/
class Umpirsky_View_Helper_FormSelectCustom extends
Zend_View_Helper_FormSelect {
/**
* Generates 'select' list of options.
*
* @access public
*
* @param string|array $name If a string, the element name. If an
* array, all other parameters are ignored, and the array elements
* are extracted in place of added parameters.
*
* @param mixed $value The option value to mark as 'selected'; if an
* array, will mark all values in the array as 'selected' (used for
* multiple-select elements).
*
* @param array|string $attribs Attributes added to the 'select' tag.
*
* @param array $options An array of key-value pairs where the array
* key is the radio value, and the array value is the radio text.
*
* @param string $listsep When disabled, use this list separator string
* between list values.
*
* @return string The select tag and options XHTML.
*/
public function formSelectCustom($name, $value = null, $attribs = null,
$options = null, $listsep = br /\n) {
return parent::formSelect($name, $value, $attribs, $options,
$listsep);
}
/**
* Builds the actual option tag.
*
* Adds custom class.
*
* @param string $value Options Value
* @param string $label Options Label
* @param array $selected The option value(s) to mark as 'selected'
* @param array|bool $disable Whether the select is disabled, or
individual options are
* @return string Option Tag XHTML
*/
protected function _build($value, $label, $selected, $disable) {
if (is_bool($disable)) {
$disable = array();
}
$class = 0 === $value ? 'none' : $value;
$opt = 'option'
. ' value=' . $this-view-escape($value) . ''
. ' class=' . 'car-brand-' . $class . '-icon' . '
car-brand-icon-background'
. ' label=' . $this-view-escape($label) . '';
// selected?
if (in_array((string) $value, $selected)) {
$opt .= ' selected=selected';
}
// disabled?
if (in_array($value, $disable)) {
$opt .= ' disabled=disabled';
}
$opt .= '' . $this-view-escape($label) . /option;
return $opt;
}
}
Then used it like:
$brand = new Zend_Form_Element_Select(array(
'name' = 'brand',
'class' = 'select-car-brand',
'value' = $request-getParam('brand', 0)
));
$brand-helper = 'FormSelectCustom';
// and add it to my form
In my case I added ' class=' . 'car-brand-' . $class . '-icon' . '
car-brand-icon-background' class to be same as value, but you can come up
with your own.
Hope this helps.
Regards,
Saša Stamenković
On Wed, Oct 28, 2009 at 4:40 PM, drm d...@melp.nl wrote:
Anders Gunnarsson wrote:
I'm creating a select box, and adding the options using addMultiOptions.
How can I set CSS Class to the option-tags?
select
option class=myClass value=11/option
option class=myClass value=22/option
option class=myClass value=33/option
/select
Afaik, you can't, but there is really no need if you're going to give all
your options the same class, you could simply give your select a classname
and create a
select.yourclassname option {
/* ... */
}
css rule