Как добавить класс для формы поля ввода?

Я пытаюсь добавить jscolor в поле ввода, но он не работает со мной!

В функции настройки:

public function configure() {
unset($this['created_at'],$this['clicks']);
$this->widgetSchema['background_color']->sfWidgetFormInput('class'=> 'jscolor');
}

Я также попытался добавить ниже в Базовая форма:

$this->setWidgets(array(
'id'            => new sfWidgetFormInputHidden(),
'background_color'  => new sfWidgetFormInput(array('class'=> 'jscolor')),
'url_link'      => new sfWidgetFormInput(),
'status'        => new sfWidgetFormInput(),
));

Ошибка: класс не разрешен в функции sfWidgetFormInput!

Я хочу добавить класс jscolor! Как я могу добавить его через JavaScript или используя эту конфигурацию?

0

Решение

Вам нужно добавить свой класс в ваш ввод во время рендеринга элемента формы в вашем шаблоне как:

<?php echo $form['background_color']->render(array('class' => 'jscolor')); ?>
1

Другие решения

sfWidgetFormInput (действительно, любой виджет symfony1) принимает 2 параметра — $options, а также $attributes, Вы передаете класс как опцию, а не как атрибут. Добавление атрибута класса при вызове render() в шаблоне есть один вариант, но я бы, вероятно, решил (в большинстве случаев) сделать это при настройке формы, в методе конфигурации

public function configure() {
unset($this['created_at'], $this['clicks']);

$this->setWidget('background_color', new sfWidgetFormInput(array(), array('class'=> 'jscolor'));

// or to be a bit more minimalistic:
$this->getWidget('background_color')->setAttribute('class','jscolor');
}

Вероятно, baseForm генерируется автоматически, и я настоятельно рекомендую не изменять его.

2

По вопросам рекламы [email protected]