1. Открываем файл lib/form/doctrine/BaseFormDoctrine.class.php и добавляем туда обработчик события form.post_configure. Этот обработчик пробегается по всем Labels формы, и добавляет к ним css-класс requred.
<?php /** * Project form base class. * * @package * @subpackage form * @author Evgeny Babin* @version SVN: $Id$ */ abstract class BaseFormDoctrine extends sfFormDoctrine { public function setup() { $this->getEventDispatcher()->connect('form.post_configure', array($this,'listenToPostConfigure')); } public function listenToPostConfigure($event) { //Отмечаем все обязательные поля звездочкой (*) foreach ($this->getFormFieldSchema()->getWidget()->getFields() as $key => $object) { $label = $this->getFormFieldSchema()->offsetGet($key)->renderLabelName(); if ($this->validatorSchema[$key]->getOption('required') == true and empty($this->widgetSchema[$key]->required_markered)) { $this->widgetSchema[$key]->required_markered=true; $this->widgetSchema->setLabel($key, '<span class="required">'.$label.'</span>'); } } } }
2. Осталось прописать сам класс requred в вашем css-файле. Обратите внимание, что звездочка в конце добавляется средствами CSS, а не прописывается в контенте:
.required { font-weight: bold; } .required:after { content: "*"; color: red; }
Можно сделать то же самое вообще для всех форм проекта. Для этого правим файл /lib/form/BaseForm.class.php и то, что мы делали в методе setup(), запишем в конструктор. Но мне кажется, что это не очень хорошая идея.
P.S. Спасибо Vit за любезно предоставленный кусок кода по обработке обязательных полей.
Комментариев нет:
Отправить комментарий