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

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

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

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

Я также попытался добавить ниже в BaseForm:

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

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

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

2 ответа

Решение

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

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

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 генерируется автоматически, и я настоятельно рекомендую не изменять его.

Другие вопросы по тегам