- Использование тэга <br/> для вертикальных отступов
Для отступов есть padding и margin в CSS, а <br/> нужен только для разрывов строк.
- Использование inline CSS
Инлайн стили надо использовать только в крайних случаях. Тогда при редизайне не прийдётся выискивать стили в HTML-шаблонах. Да и страничка будет загружаться быстрее, т.к. CSS-файлы, как правило, кешируются.
- Использование инлайн JavaScript
Аналогично предыдущему пункту. Старайтесь избегать кода вида <a onclick="...". Не стоит загромождать HTML код логикой. Лучше создать отдельный js-файл и навесить обработчик события из него.
- Использование таблиц для отображения нетабличных данных
Про это и так предостаточно сказано, поэтому комментирвать не буду.
- Невалидный HTML
Ваш HTML-код должен 100% проходить валидацию. Провериться можно на W3C Markup Validation Service,
так же рекомендую расширение для FireFox - Html Validator.
суббота, 10 октября 2009 г.
5 признаков плохого HTML кода
Недавно, в связи с редизайном одного проекта, пришлось перелопатить довольно большой объём HTML-кода. Ниже привожу 5 наиболее распространённых ошибок, про которые все знают, но почему-то не особо стараются их избегать.
Метки:
html
вторник, 6 октября 2009 г.
Readonly fields in symfony
Иногда бывает необходимо просто отобразить поле в форме без возможности его изменения. Обычно это актуально для автогенерируемых полей, таких как created_at и updated_at. Проблема в том, что поля типа datetime отображаются в виде набора селектов (sfWidgetFormSelect) и простое навешивание атрибута readonly не поможет:
Если по каким-либо причинам понадобилось вместо поля ввода (input) отображать просто текст, то можно создать виджет myWidgetFormPlain
$this->widgetSchema['created_at']->setAttribute('readonly', 'readonly');Наиболее простым выходом из ситуации будет замена виджета sfWidgetFormDateTime на sfWidgetFormInput:
public function configure() { // ... $this->widgetSchema['created_at'] = new sfWidgetFormInput(array(), array('readonly'=>'readonly')); // ... }
Если по каким-либо причинам понадобилось вместо поля ввода (input) отображать просто текст, то можно создать виджет myWidgetFormPlain
class myWidgetFormPlain extends sfWidgetForm { protected function configure($options = array(), $attributes = array()) { } public function render($name, $value = null, $attributes = array(), $errors = array()) { return $value ? $value : '—'; } }При использовании этого виджета необходимо отключить валидатор:
public function configure() { // ... $this->widgetSchema['created_at'] = new myWidgetFormPlain(); unset($this->validatorSchema['created_at']); // ... }
Метки:
symfony
Подписаться на:
Сообщения (Atom)