The sfWidgetFormSelect doesn’t provide ability to render disabled options. It’s rarely used feature of a HTML select element, but sometimes it could save your life 🙂 In fact, we can achieve this feature by creating our own widget, like one listed below, which inherits from sfWidgetFormSelect. This solution is inspired by problem posted on Symfony Experts.

 /** 
  * Select widget with disabled options for values below zero
  *
  * @uses sfWidgetFormSelect
  * @author Wojciech Sznapka
  */  
  class myWidgetFormSelect extends sfWidgetFormSelect
  {
    /** 
     * Overriden renderContentTag - if it's option then we check for disableCondition and set disabled attribute
     *   
     * @see sfWidget::renderContentTag
     */  
    public function renderContentTag($tag, $content = null, $attributes = array())
    {   
      if ($tag == 'option' && isset($attributes['value']) && $this->disableCondition($attributes['value'])) {
        $attributes['disabled'] = 'disabled';
      }   
      return parent::renderContentTag($tag, $content, $attributes);
    }   
    /** 
     * Check if we should disable option depends on it vaule (value is below zero)
     *   
     * @param mixed $value value of the option
     * @return boolean if true, the option will be disalbed
     */  
    protected function disableCondition($value)
    {   
      return (int)$value < 0;
    }   
  }
~