Виджет Symfony очищает метку программно при рендере

0

Я пытаюсь программно установить значение метки виджета после выполнения некоторых проверок, но мои попытки ниже не работают. Может ли кто-нибудь увидеть, что я делаю неправильно? Обратите внимание, что метка уже имеет значение, и я просто хочу ее очистить. То есть в symfony 1.4.

class customFormSome extends sfWidgetFormTextarea {

/**
 * Constructor.
 *
 * @see sfWidgetFormTextarea
 * */
protected function configure($options = array(), $attributes = array()) {        
    $this->addOption('element_id');
}

/**
 * @param  string $name        The element name
 * @param  string $value       The value displayed in this widget
 * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
 * @param  array  $errors      An array of errors for the field
 *
 * @see sfWidget
 * */
public function render($name, $value = null, $attributes = array(), $errors = array()) {

   /*** SOME PROCESSING HERE******/

   $this->setAttribute('label', '');  //---->DOESNT WORK
   $this->setAttribute('label', FALSE);  //---->DOESNT WORK
   $this->setAttribute('label', NULL);  //---->DOESNT WORK
   $fields = $this->parent->setLabel($this->getOption('element_id'), '');//---->DOESNT WORK
}
Теги:
symfony-1.4

1 ответ

0
Лучший ответ

Слишком поздно вызывать setAttiribute() в методе рендеринга, он получает атрибуты из параметра $attributes, поэтому вам нужно только перезаписать его:

public function render($name, $value = null, $attributes = array(), $errors = array()) {

   /*** SOME PROCESSING HERE******/

  $attributes['label'] = $this->getOption('element_id');
  return parent::render($name, $value, $attributes, $errors);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню