Я пытаюсь программно установить значение метки виджета после выполнения некоторых проверок, но мои попытки ниже не работают. Может ли кто-нибудь увидеть, что я делаю неправильно? Обратите внимание, что метка уже имеет значение, и я просто хочу ее очистить. То есть в 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
}
Слишком поздно вызывать 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);
}