Я пытаюсь добавить 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 или используя эту конфигурацию?
Вам нужно добавить свой класс в ваш ввод во время рендеринга элемента формы в вашем шаблоне как:
<?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 генерируется автоматически, и я настоятельно рекомендую не изменять его.