Я пытаюсь добавить 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 или используя эту конфигурацию?

0
Dev Troubleshooter 1 Янв 2018 в 14:06

2 ответа

Лучший ответ

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

<?php echo $form['background_color']->render(array('class' => 'jscolor')); ?>
1
Umair Shah Yousafzai 1 Янв 2018 в 11:30

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
Michael Kopinsky 2 Янв 2018 в 03:49