Тексты ошибок валидации на английском

В прошлых статьях был рассмотрен механизм валидации принимаемых данных. Рекомендуем посмотреть эти статьи:

  • Проверка принимаемых данных в Laravel
  • Проверка принимаемых данных в Laravel (часть 2)

В этой статье будет подробнее описан способ изменения сообщений, которые выдаются в процессе обработки ошибок.

Изменение сообщений об ошибках

Существует несколько способов для задания своих текстов сообщений об ошибках валидации. Первый — можно передать текст сообщения третьим аргументом для метода «make» класса «Validator»:

<?php
$messages = [
   'required' => 'Необходимо заполнить поле :attribute.',
];

$validator = Validator::make($input, $rules, $messages);
?>

Обратите внимание на «:attribute» в тексте сообщения. Оно будет заменено на имя передаваемого поля. Приведём другие примеры автоматической подстановки таких значений:

<?php
$messages = [
   'same'    => ':attribute и :other должны совпадать.',
   'size'    => ':attribute должен быть равен :size.',
   'between' => ':attribute должен быть между :min и :max.',
   'in'      => ':attribute должен иметь один из следующих типов: :values',
];
?>

Если нужно установить текст ошибки только для конкретного поля, а не для всех подобных ошибок во всех полях, то необходимо записать его через точку «имя_атрибута.правило»:

<?php
$messages = [
   'email.required' => 'Нам надо знать ваш e-mail!',
];
?>

Сообщения на разных языках

Ситуация с передачей текста сообщения напрямую в «validator» встречается довольно редко. Обычно сообщения записываются в языковом файле resources/lang/xx/validation.php. Там они записываются

<?php
'custom' => [
   'email' => [
      'required' => 'Пожалуйста, введите свой e-mail',
   ],
],
?>

Кроме того в этом файле файле можно указывать свои шаблоны для замены (как с «:attribute»):

<?php
'attributes' => [
   'email' => 'адрес электронной почты',
],
?>

Была ли статья полезной?

Была ли эта статья полезна?

Есть вопрос?

хостинг для сайтов

Закажите недорогой хостинг

Заказать

всего от 290 руб

Вытяжка из книги «ASP.NET Core разработка приложений»

Аннотации данных
В кодовой базе осталось еще одно последнее место, которое может содержать лока-
лизуемый текст. Аннотации данных, используемые в классах моделей представле-
ний, позже используются тег-хелперами в Razor для отображения соответствую-
щих меток и сообщений об ошибках проверки. Рассмотрим класс LoginViewModel,
используемый в представлении Account/Login.
Класс LoginViewModel, используемый в Account/Login

public class LoginViewModel 
{ 
[Required(ErrorMessage = "Email is required")] 
[EmailAddress(ErrorMessage = "Not a valid email address")] 
[Display(Name= "Email")] 
public string Email { get; set; } 
[Required(ErrorMessage = "Password is required")] 
[DataType(DataType.Password)] 
[Display(Name="Password")] 
public string Password { get; set; } 
[Display(Name = "Remember me?")] 
public bool RememberMe { get; set; } 
} 

Локализованные версии сообщений об ошибках аннотаций данных загружа-
ются во время выполнения из файлов ресурсов с использованием соглашений
об именах, сходных с теми, которые использует IStringLocalizer. Текст для ка-
надского французского может загружаться из файла ресурсов Resources/Models.
AccountViewModels.LoginViewModel.fr-CA.resx.
Учтите, что на момент написания книги значения Name, указанные в атрибуте
Display, не локализуются. Локализация отображаемых имен будет поддерживать-
ся в ASP.NET Core MVC 1.1 при выпуске.

Просмотров 1.3к. Опубликовано 19.12.2022
Обновлено 19.12.2022

Каждый сайт, который создает компания, должен отвечать принятым стандартам. В первую очередь затем, чтобы он попадал в поисковую выдачу и был удобен для пользователей. Если код страниц содержит ошибки, неточности, он становится “невалидным”, то есть не соответствующим требованиям. В результате интернет-ресурс не увидят пользователи или информация на нем будет отображаться некорректно. 

В этой статье рассмотрим, что такое валидность, какие могут быть ошибки в HTML-разметке и как их устранить.

Содержание

  1. Что такое HTML-ошибка валидации и зачем она нужна
  2. Чем опасны ошибки в разметке
  3. Как проверить ошибки валидации
  4. Предупреждения
  5. Ошибки
  6. Пример прохождения валидации для страницы сайта
  7. Как исправить ошибку валидации
  8. Плагины для браузеров, которые помогут найти ошибки в коде
  9. Коротко о главном

Что такое HTML-ошибка валидации и зачем она нужна

Под понятием  “валидация” подразумевается процесс онлайн-проверки HTML-кода страницы на соответствие стандартам w3c. Эти стандарты были разработаны Организацией всемирной паутины и стандартов качества разметки. Сама организация продвигает идею унификации сайтов по HTML-коду — чтобы каждому пользователю, вне зависимости от браузера или устройства, было удобно использовать ресурс.

Если код отвечает стандартам, то его называют валидным. Браузеры могут его прочитать, загрузить страницы, а поисковые системы легко находят страницу по соответствующему запросу. 

Чем опасны ошибки в разметке

Ошибки валидации могут разными — видимыми для глаза простого пользователя или такими, которые можно засечь только с помощью специальных программ. В первом случае кроме технических проблем, ошибки в разметке приводят к негативному пользовательскому опыту. 

К наиболее распространённым последствиям ошибок в коде HTML-разметки также относят сбои в нормальной работе сайта и помехи в продвижении ресурса в поисковых системах.

Рассмотрим несколько примеров, как ошибки могут проявляться при работе:

  • Медленно подгружается страница 

Согласно исследованию Unbounce, более четверти пользователей покидают страницу, если её загрузка занимает более 3 секунд, ещё треть  уходит после 6 секунд;

  • Не видна часть текстовых, фото и видео-блоков 

Эта проблема делает контент для пользователей неинформативным, поэтому они в большинстве случаев уходят со страницы, не досмотрев её до конца;

  • Страница может остаться не проиндексированной

Если поисковый робот распознает недочёт в разметке, он может пропустить страницу и прервать её размещение в поисковых системах;

  • Разное отображение страниц на разных устройствах

Например, на компьютере или ноутбуке страница будет выглядеть хорошо, а на мобильных гаджетах половина кнопок и изображений будет попросту не видна.

Из-за этих ошибок пользователь не сможет нормально работать с ресурсом. Единственное решение для него — закрыть вкладку и найти нужную информацию на другом сайте. Так количество посетителей сайта постепенно уменьшается, он перестает попадать в поисковую выдачу  —  в результате ресурс становится бесполезным и пропадает в пучине Интернета.

Как проверить ошибки валидации

Владельцы ресурсов используют 2 способа онлайн-проверки сайтов на наличие ошибок — технический аудит или использование валидаторов. 

Первый случай подходит для серьёзных проблем и масштабных сайтов. Валидаторами же пользуются ежедневно. Наиболее популярный — сервис The W3C Markup Validation Service. Он сканирует сайт и сравнивает код на соответствие стандартам W3C. Валидатор выдаёт 2 типа несоответствий разметки стандартам W3C: предупреждения и ошибки. 

Давайте рассмотрим каждый из типов чуть подробнее.

Предупреждения

Предупреждения отмечают незначительные проблемы, которые не влияют на работу ресурса. Они появляются из-за расхождений написания разметки со стандартами W3C. 

Тем не менее, предупреждения всё равно нужно устранять, так как из-за них сайт может работать медленнее — например, по сравнению с конкурентами с такими же сайтами.

Примером предупреждения может быть указание на отсутствие тега alt у изображения. 

Ошибки

Ошибки  —  это те проблемы, которые требуют обязательного устранения. 

Они представляют угрозу для корректной работы сайта: например, из-за них могут скрываться разные блоки  — текстовые, фото, видео. А в некоторых более запущенных случаях содержимое страницы может вовсе не отображаться, и сам ресурс не будет загружаться. Поэтому после проверки уделять внимание ошибкам с красными отметками нужно в первую очередь.

Распространённым примером ошибки может быть отсутствие тега <!DOCTYPE html> в начале страницы, который помогает информации преобразоваться в разметку. 

Пример прохождения валидации для страницы сайта

Рассмотрим процесс валидации на примере сайта avavax.ru, который создали на WordPress.

пример ошибки валидации

В результате проверки валидатор выдал 17 замечаний. После анализа отчета их можно свести к 3 основным:

  1. атрибут ‘text/javascript’ не требуется при подключении скрипта;
  2. атрибут ‘text/css’ не требуется при подключении стиля;
  3. у одного из элементов section нет внутри заголовка h1-h6.

Первое и второе замечания генерирует сам движок WordPress, поэтому разработчикам не нужно их убирать. Третье же замечание предполагает, что каждый блок текста должен иметь заголовок, даже если это не всегда необходимо или видно для читателя. 

Решить проблемы с предупреждениями для стилей и скриптов можно через добавление кода в файл темы function.php.

Добавление кода в файл

Для этого на хук wp_loaded нужно повесить функцию output_buffer_start(), которая загрузит весь генерируемый код html в буфер. При выводе в буфер вызывается функция output_callback($tag), которая просматривает все теги, находит нежелательные атрибуты с помощью регулярных выражений и заменяет их пробелами. Затем на хук ‘shutdown вешается функция output_buffer_end(), которая возвращает обработанное содержимое буфера.

Для исправления семантики на сайте нужно использовать заголовки. Валидатор выдаёт предупреждение на секцию about, которая содержит фото и краткий текст. Валидатор требует, чтобы в каждой секции был заголовок. Для исправления предупреждения нужно добавить заголовок, но сделать это  так, чтобы его не было видно пользователям:

  1. Добавить заголовок в код:  <h3>Обо мне</h3>

Отключить отображение заголовка:

1 #about h3 {
2 display: none;
3 }

После этой части заголовок будет в коде, но валидатор его увидит, а посетитель — нет. 

За 3 действия удалось убрать все предупреждения, чтобы качество кода устроило валидатор. Это подтверждается зелёной строкой с надписью: “Document checking completed. No errors or warnings to show”.

Как исправить ошибку валидации

Всё зависит от того, какими техническими знаниями обладает владелец ресурса. Он может сделать это сам, вручную. Делать это нужно постепенно, разбирая ошибку за ошибкой. Но нужно понимать, что если при проверке валидатором было выявлено 100 проблем — все 100 нужно обязательно решить. 

Поэтому если навыков и знаний не хватает, лучше привлечь сторонних специалистов для улучшения качества разметки. Это могут быть как фрилансеры, так и профессиональные веб-агентства. При выборе хорошего специалиста, результат будет гарантироваться в любом случае, но лучше, чтобы в договоре оказания услуг будут чётко прописаны цели проведения аудита и гарантии решения проблем с сайтом. 

Если объём работ большой, выгоднее заказать профессиональный аудит сайта. С его помощью можно обнаружить разные виды ошибок, улучшить внешний вид и привлекательность интернет-ресурса для поисковых ботов, обычных пользователей, а также повысить скорость загрузки страниц, сделать качественную верстку и избавиться от переспама.

Плагины для браузеров, которые помогут найти ошибки в коде

Для поиска ошибок валидации можно использовать и встроенные в браузеры плагины. Они помогут быстро находить неточности еще на этапе создания кода. 

Для каждого браузера есть свой адаптивный плагин:

  • HTML Validator для браузера Firefox;
  • HTML Validator for Chrome;
  • HTML5 Editor для Opera.

С помощью этих инструментов можно не допускать проблем, которые помешают нормальному запуску сайта. Плагины помогут оценить качество внешней и внутренней оптимизации, контента и другие характеристики.

Коротко о главном

Валидация — процесс выявления проблем с HTML-разметкой сайта и ее соответствия стандартам W3C. Это унифицированные правила, с помощью которых сайт может нормально работать и отображаться и для поисковых роботов, и для пользователей. 

Проверку ресурса можно проводить тремя путями: валидаторами, специалистам полномасштабного аудита и плагинами в браузере. В большинстве случаев валидатор — самое удобное и быстрое решение для поиска проблем. С его помощью можно выявить 2 типа проблем с разметкой — предупреждения и ошибки. 

Работать необходимо сразу с двумя типами ошибок. Даже если предупреждение не приведет к неисправности сайта, оставлять без внимания проблемные блоки нельзя, так как это снизит привлекательность ресурса в глазах пользователя. Ошибки же могут привести к невозможности отображения блоков на сайте, понижению сайта в поисковой выдаче или полному игнорированию ресурса со стороны поискового бота.

Даже у крупных сайтов с миллионной аудиторией, например, Яндекс.Дзен или ВКонтакте, есть проблемы с кодом. Но комплексный подход к решению проблем помогает устранять серьёзные моменты своевременно. Нужно развивать сайт всесторонне, чтобы получить результат от его существования и поддержки. Если самостоятельно разобраться с проблемами не получается, не стоит “доламывать” — лучше обратиться за помощью к профессионалам, например, агентствам по веб-аудиту. 

Вытяжка из книги «ASP.NET Core разработка приложений»

Аннотации данных
В кодовой базе осталось еще одно последнее место, которое может содержать лока-
лизуемый текст. Аннотации данных, используемые в классах моделей представле-
ний, позже используются тег-хелперами в Razor для отображения соответствую-
щих меток и сообщений об ошибках проверки. Рассмотрим класс LoginViewModel,
используемый в представлении Account/Login.
Класс LoginViewModel, используемый в Account/Login

public class LoginViewModel 
{ 
[Required(ErrorMessage = "Email is required")] 
[EmailAddress(ErrorMessage = "Not a valid email address")] 
[Display(Name= "Email")] 
public string Email { get; set; } 
[Required(ErrorMessage = "Password is required")] 
[DataType(DataType.Password)] 
[Display(Name="Password")] 
public string Password { get; set; } 
[Display(Name = "Remember me?")] 
public bool RememberMe { get; set; } 
} 

Локализованные версии сообщений об ошибках аннотаций данных загружа-
ются во время выполнения из файлов ресурсов с использованием соглашений
об именах, сходных с теми, которые использует IStringLocalizer. Текст для ка-
надского французского может загружаться из файла ресурсов Resources/Models.
AccountViewModels.LoginViewModel.fr-CA.resx.
Учтите, что на момент написания книги значения Name, указанные в атрибуте
Display, не локализуются. Локализация отображаемых имен будет поддерживать-
ся в ASP.NET Core MVC 1.1 при выпуске.

Валидация

Валидация — это проверка значений, указанных пользователем, и отображение найденных ошибок.

Описанное здесь поведение валидаций и отображение ошибок реализовано в библиотеке «React UI Validations», по возможности используйте эту библиотеку в продукте.

Принципы

Задача дизайнера — сделать так, чтобы пользователь не совершил ошибку и валидация не понадобилась, для этого:

  1. Ограничьте выбор заведомо неверных значений в списке: блокируйте эти значения или не показывайте в списке.
  2. Ограничьте ввод неподходящих символов. Если в поле нужно вводить только цифры, и это очевидно пользователю, игнорируйте ввод букв вместо того, чтобы показать ошибку. Используйте маски в полях, где у значений известен формат.
  3. Пишите подсказки для заполнения формы. Например, плейсхолдер в полях ввода.

Валидация на только что открытой пустой форме запрещена. Исключение — черновики, когда пользователь уже заполнял эту форму, через какое-то время вернулся к ней, а она заполнена с ошибками.

Виды валидации

Существует три вида валидаций: мгновенная, по потере фокуса и по отправке формы.

Чем раньше интерфейс сообщает об ошибке, тем лучше — пользователю проще вернуться и исправить ошибку.

Самый быстрый способ сообщить об ошибке — мгновенная валидация. Но она возможна только в тех случаях, когда в процессе ввода понятно, что значение некорректное. Обычно такие ошибки связаны с неправильной раскладкой клавиатуры (кириллица вместо латиницы) или вводом букв в цифровое поле (ИНН, КПП и др.) Для этих случаев мы используем поля с масками: ввод неподходящих символов в них заблокирован. Поэтому в наших интерфейсах есть только два вида валидации:

  • по потере фокуса — основной вид валидации
  • по отправке формы — для тех случаев, когда валидация по потере фокуса невозможна.

Валидация по потере фокуса

Когда использовать

Этот вид валидации подходит для большинства случаев.

Как работает

Не валидируйте поля на пустоту по потере фокуса — не показывайте ошибку если поле не заполнено, возможно пользователь вернется и заполнит поле чуть позже. Показывать ошибку в таких случаях можно только после отправки формы.

Валидация срабатывает сразу после потери фокуса, если значение в поле заполнено. Если найдена ошибка, поле подсвечивается красным. Фокус в это поле автоматически не возвращается:

Текст ошибки появляется в тултипе, когда поле получает наведение или фокус:

Поле с ошибкой должно остаться подсвеченным, если оно получило фокус, его значение не исправляли, а затем оно потеряло фокус.

Красная подсветка снимается с поля, как только пользователь начал исправлять ошибочное значение.

Валидация при отправке формы

Когда использовать

Используйте этот вид валидации, когда нельзя проверить поля по потере фокуса. Например, для проверки заполнения обязательных полей.

Как работает

Проверка происходит после того, как пользователь нажал кнопку отправки данных: все поля с ошибками на форме подсвечиваются, страница прокручивается к первому полю с ошибкой, фокус перемещается в это поле, курсор встает в конец строки, рядом с полем появляется тултип с подсказкой.

При прокрутке к первому полю от верхней границы окна до ошибочного поля остается отступ 48px — шесть модулей.

Блокирование кнопки отправки

В небольших формах вместо проверки заполнения обязательных полей можно блокировать кнопку отправки формы. Используйте это поведение, когда очевидно, почему кнопка отправки формы неактивна. Например, на форме входа:

Как только заполнены все обязательные поля — кнопка становится активной. Если после этого пользователь стер значение в одном из полей — кнопка снова должна стать не активной.

Сообщения об ошибках

Об ошибках можно сообщать двумя способами:

  1. Красным текстом около поля, обычно под полем или справа от него:
  2. Текстом в тултипе:

Из этих двух способов мы рекомендуем использовать тултипы. Они идут отдельным слоем, поэтому не раздвигают форму и легко размещаются, даже если поля на форме расположены плотно.

Тултипы

Как работают

Тултип с подсказкой появляется в двух случаях:

  1. При наведении на поле с ошибкой.
  2. Когда поле с ошибкой получает фокус.

Если значение в поле с ошибкой было изменено, потеряло фокус, а потом заново оказалось в фокусе — тултип с текстом старой ошибки уже не возникает. Это правило одинаково работает для всех типов валидаций: и по потере фокуса, и при отправке формы.

Тултип исчезает, когда:

  1. Курсор вышел из области поля с ошибкой.
  2. Поле с ошибкой потеряло фокус.

Тултип по наведению перекрывает тултип по фокусу.

Тултип может появляться сверху или справа от контрола с ошибкой, так чтобы он не перекрывал полезную информацию:

Единообразие поведения и внешнего вида

Показывайте тултипы справа от полей. Eсли в этом случае они перекрывают важное содержимое на странице, выводите тултипы сверху. Придерживайтесь единообразия, но помните, что контент важнее него.

Красные тексты на странице

Как работают

Красный текст ошибки появляется сразу, как только произошла валидация и ошибочное поле подсветилось.

Как только пользователь начал исправлять значение, красная подсветка поля исчезает, и цвет текста ошибки меняется на черный — #222.

Текст ошибки пропадает по потере фокуса и больше не появляется, если поле заново получает фокус. Это правило одинаково работает для всех типов валидаций: и по потере фокуса, и при отправке формы.

Выводите текст ошибки справа, если на форме есть место, а само сообщение короткое. Так форму не придется раздвигать, чтобы показать ошибку.

Если справа от поля нет места для текста, раздвигайте форму и выводите сообщение под полем.

На более сложных формах выводите сообщение об ошибке в тултипе.

Валидация зависимых полей

Зависимые поля — это поля, значение которых зависит друг от друга.

Ошибки, которые связаны с нарушением зависимости полей, мы показываем после сабмита формы. Например, ИНН и КПП. Если пользователь указал ИНН из 10 цифр, а поле с КПП оставил пустым, после отправки формы пустое поле с КПП будет подсвечено.

ИНН может быть двух видов:

  • 10-значный у юридических лиц
  • 12-значный у ИП.

Если пользователь указал ИНН из 12 цифр, значит организация — индивидуальный предприниматель, и у нее нет КПП, значит поле КПП заполнять не нужно. И наоборот, если заполнено КПП, а ИНН указан 12-значный, возможно неверно указан ИНН.

Подсветка зависимых полей пропадает, как только пользователь начал исправлять значение в одном из этих полей.

Если при заполнении зависимого поля нарушен формат значения, сообщайте о такой ошибке при потере фокуса. Например, пользователь ввел 3 цифры в поле ИНН и убрал фокус. Такое поле должно подсветиться сразу же.

Пример

Есть форма из 5 полей:

  • Название организации — простое текстовое, обязательное
  • ИНН — 10 или 12 цифр, проверка контрольной суммы по потере фокуса, обязательное
  • КПП — 9 цифр с проверкой контрольной суммы по потере фокуса, обязательное, если ИНН состоит из 10 цифр
  • Электронная почта — адрес почты, проверка по потере фокуса по маске a@a.aa, необязательное
  • Телефон — международный формат, проверка по потере фокуса по маске +00000000000, обязательное

Пользователь пропустил поле с названием организации, заполнил ИНН значением из 10 цифр, перешел в поле почты, указал некорректный адрес, перешел в поле с телефоном и указал некорректный номер, но из поля пока не ушел:

Пользователь навел курсор на поле с почтой, появился тултип. Но исправлять значение пользователь не стал:

Пользователь нажал кнопку «Отправить» — фокус перешел в поле «Название организации», так как оно обязательное и незаполненное:

Поле с телефоном также подсветилось красным, так как заполнено некорректно. ИНН и КПП подсветились, так как ИНН состоит из 10 цифр, значит должен быть заполнен и КПП — валидация зависимых полей произошла только после отправки формы.

Пользователь начинает вводить название организации, подсветка поля гаснет, а текст подсказки остается:

Заполнил название организации, перешел в поле ИНН:

Понял, что ИНН правильный, и нужно заполнить КПП:

Начал заполнять поле КПП. Красная рамка у ИНН и КПП исчезла — пользователь изменил значение в одном из зависимых полей:

Заполнил КПП, перешел в следующее поле:

Исправил почту, перешел в следующее поле:

Исправил телефон, кликнул за пределами поля:

Теперь по нажатию кнопки «Отправить» все будет хорошо.

Наличие ошибок в коде страницы сайта всегда влечет за собой негативные последствия – от ухудшения позиций в ранжировании до жалоб со стороны пользователей. Ошибки валидации могут наблюдаться как на главной, так и на иных веб-страницах, их наличие свидетельствует о том, что ресурс является невалидным. Некоторые проблемы замечают даже неподготовленные пользователи, другие невозможно обнаружить без предварительного аудита, анализа. О том, что такое ошибки валидации и как их обнаружить, мы сейчас расскажем.

Комплексный аудит сайта, что входит, как сделать

Ошибка валидации, что это такое?

Для написания страниц используется HTML – стандартизированный язык разметки, применяемый в веб-разработке. HTML, как любой другой язык, имеет специфические особенности синтаксиса, грамматики и т. д. Если во время написания кода правила не учитываются, то после запуска сайта будут появляться различные виды проблем. Если HTML-код ресурса не соответствует стандарту W3C, то он является невалидным, о чем мы писали выше.

Почему ошибки валидации сайта оказывают влияние на ранжирование, восприятие?

Наличие погрешностей в коде – проблема, с которой необходимо бороться сразу после обнаружения. Поисковые системы «читают» HTML-код, если он некорректный, то процесс индексации и ранжирования может быть затруднен. Поисковые роботы должны понимать, каким является ресурс, что он предлагает, какие запросы использует. Особо критичны такие ситуации для ресурсов, имеющих большое количество веб-страниц.

Как проверить ошибки валидации?

Как проверить ошибки валидации
Для этой работы используется либо технический аудит сайта, либо валидаторы, которые ищут проблемы автоматически. Одним из самых популярных является сервис The W3C Markup Validation Service, выполняющий сканирование с оглядкой на World Wide Web Consortium (W3C). Рассматриваемый валидатор предлагает три способа, с помощью которых можно осуществить проверку сайта:

  • ввод URL-адреса страниц, которые необходимо просканировать;
  • загрузка файла страницы;
  • ввод части HTML-кода, нуждающегося в проверке.

После завершения проверки вы получите развернутый список выявленных проблем, дополненных описанием, ссылками на стандарты W3C. По ходу анализа вы увидите слабые места со ссылками на правила, что позволит самостоятельно исправить проблему.

Существуют другие сервисы, позволяющие выполнить проверку валидности кода:

  • Dr. Watson. Проверяет скорость загрузки страниц, орфографию, ссылки, а также исходный код;
  • InternetSupervision.com. Отслеживает производительность сайта, проверяет доступность HTML.

Плагины для браузеров, которые помогут найти ошибки в коде

Решить рассматриваемую задачу можно с помощью плагинов, адаптированных под конкретный браузер. Можно использовать следующие инструменты (бесплатные):

  • HTML Validator для браузера Firefox;
  • HTML Validator for Chrome;
  • Validate HTML для Firefox.

После проверки нужно решить, будете ли вы устранять выявленные ошибки. Многие эксперты акцентируют внимание на том, что поисковые системы сегодня уделяют больше внимания качеству внешней/внутренней оптимизации, контенту, другим характеристикам. Однако валидность нельзя оставлять без внимания, ведь если даже обнаруженные проблемы не будут мешать поисковым ботам, то они точно начнут раздражать посетителей сайта.

Как исправить ошибку валидации?

Как исправить ошибку валидации
В первую очередь нужно сосредоточить внимание на слабых местах, связанных с контентом – это то, что важно для поисковых систем. Если во время сканирования было выявлено более 25 проблем, то их нельзя игнорировать из-за ряда причин:

  • частичная индексация;
  • медленная загрузка;
  • баги, возникающие во время непосредственной коммуникации пользователя с ресурсом.

Например, игнорирование ошибок может привести к тому, что некоторые страницы не будут проиндексированы. Для решения рассматриваемой проблемы можно привлечь опытного фрилансера, однако лучшее решение – заказ услуги в веб-агентстве, что позволит исправить, а не усугубить ситуацию.

Технический и SEO-аудит

Выявление ошибок – первый шаг, ведь их еще нужно будет устранить. При наличии большого пула проблем целесообразно заказать профессиональный аудит сайта. Он поможет найти разные виды ошибок, повысит привлекательность ресурса для поисковых ботов, обычных пользователей: скорость загрузки страниц, верстка, переспам, другое.

В заключение

На всех сайтах наблюдаются ошибки валидации – их невозможно искоренить полностью, но и оставлять без внимания не стоит. Например, если провести проверку сайтов Google или «Яндекс», то можно увидеть ошибки, однако это не означает, что стоит вздохнуть спокойно и закрыть глаза на происходящее. Владелец сайта должен ставить во главу угла комплексное развитие, при таком подходе ресурс будет наполняться, обновляться и «лечиться» своевременно. Если проблем мало, то можно попробовать устранить их своими силами или с помощью привлечения стороннего частного специалиста. В остальных случаях лучше заказать услугу у проверенного подрядчика.

Что такое ошибки валидации и как их исправить

0 / 0 / 7

Регистрация: 31.05.2013

Сообщений: 181

1

23.10.2015, 23:37. Показов 2354. Ответов 10


Можно как-то задать на каком языке браузеру сообщать о ошибках валидации при отправке формы?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

413 / 378 / 220

Регистрация: 18.07.2014

Сообщений: 1,259

24.10.2015, 01:11

2

Wizlight, шта?

0

16 / 16 / 5

Регистрация: 06.10.2015

Сообщений: 245

24.10.2015, 01:44

3

Wizlight, ПРименрно так…. «Спасибо за …. / Thanks for…»

Просто в сообщении в ответте укажи 2 языка….не надо мудрить!

0

Эксперт .NET

4430 / 2090 / 404

Регистрация: 27.03.2010

Сообщений: 5,657

Записей в блоге: 1

24.10.2015, 02:11

4

Wizlight, ты хотя бы указал стек технологий. В ASP.NET с привязкой данных это делается одним способом. На чистом HTML + JavaScript, думаю, как-то по своему и т.д.

Добавлено через 48 секунд
Я имею ввиду, что если сообщения об ошибках тобой написаны.

Добавлено через 3 минуты
Кажись прям то, что тебе и надо. Только тут в JavaScript нужно будет текст сообщения подставлять, а русский или английский выберешь по каким-то критериям сам.
http://professorweb.ru/my/html… l2/2_2.php

0

16 / 16 / 5

Регистрация: 06.10.2015

Сообщений: 245

24.10.2015, 03:10

5

Casper-SC, АЯ ЧТО НАПИСАЛ??? Не выбор языка? Сразу два написать и проблем нет!

0

Эксперт .NET

4430 / 2090 / 404

Регистрация: 27.03.2010

Сообщений: 5,657

Записей в блоге: 1

24.10.2015, 04:18

6

maxon-by, выпей валерьянки. Не нервничай так (иначе я не понимаю смысла в твоём капсе). То есть ты считаешь, что тобой предложенное решение единственно верное и другие варианты ты спокойно не воспринимаешь?

Добавлено через 1 минуту

Цитата
Сообщение от maxon-by
Посмотреть сообщение

Сразу два написать и проблем нет!

Как по мне, то это бред. А если нужно 10 языков поддерживать? Сразу на 10 писать?

0

0 / 0 / 7

Регистрация: 31.05.2013

Сообщений: 181

24.10.2015, 10:08

 [ТС]

7

Casper-SC, maxon-by, Может немного не так выразился.
Я про дефолтные сообщения браузера. Например если указать в инпуте формы required и если это поле будет пустым, при отправке формы — форма не отправится и браузер сам выведит подсказку типа «поле не может быть пустым». У одного пользователя эта подсказка на англ. у второго на рус. Браузер сам решает по какимто критериям. Можно задать это ему явно? Сайт мультиязычный от и ошибка должна выводится (дефолтная) на том языке какой установлен пользователем

0

Эксперт HTML/CSS

653 / 556 / 322

Регистрация: 27.01.2015

Сообщений: 1,374

24.10.2015, 10:14

8

Цитата
Сообщение от Wizlight
Посмотреть сообщение

Я про дефолтные сообщения браузера.

«Дефолтные» сообщения браузера выводятся на том языке, который установлен в настройках браузера и вы на это не повлияете.

0

Эксперт HTML/CSS

2960 / 2578 / 1068

Регистрация: 15.12.2012

Сообщений: 9,733

Записей в блоге: 11

24.10.2015, 11:26

9

Wizlight, ну если сайт мультиязычный тогда стоит для вывода ошибок использовать php-переменные вместо конкретных слов, значения переменных берутся из языковых файлов, линкуются они с помощью того же php и в зависимости от выбранного языка локализации подключается тот или иной языковой файл для выдачи сообщения пользователю… Какая у Вас cms? Почитайте документацию по подключению дополнительных языков…

0

0 / 0 / 7

Регистрация: 31.05.2013

Сообщений: 181

24.10.2015, 12:04

 [ТС]

10

Fedor92, Yii. Да это я знаю, так сообщения и реализованы. Интересует админская часть сайта, поэтому не хотелось лишний раз нагружать сервер или писать скрипты для этого, видимо придется.
Ну ладно спс

0

Эксперт HTML/CSS

2960 / 2578 / 1068

Регистрация: 15.12.2012

Сообщений: 9,733

Записей в блоге: 11

24.10.2015, 12:17

11

Wizlight, админская часть обычно не сильно отличается от пользовательской(в плане функционала)… Под админку точно также подключаются языковые файлы и также линкуются… Насколько я помню yii, как раз заточен под mvc, поэтому проблем возникнуть не должно… Делаете перевод или затачиваете под заказчика? Хотя вопрос не актуален, скорее всего в оф. документации есть описание языковой локализации, так что перед тем, как что-либо пытаться изменить лучший вариант обратиться именно к ней…

0

Альтернативный текст

Для более верной работы сайта (магазина, в данном случае), проверяем на наличие ошибок в коде с помощью валидатора https://validator.w3.org/.

Например в статьях на этом сайте есть целых 15 ошибок кода.

Посмотреть их можно здесь.

Я их не исправляю, так как у меня уже практически готов новый дизайн сайта, в котором ошибок не будет. На него я решил перейти, учитывая  что сейчас не менее половины заходов на сайт с мобильных устройств, под которые я и переделываю этот проект.

Ошибки же, о которых пойдет речь ниже, касаются магазинов на JoomShopping, которыми я занимаюсь чаще и более основательно, чем сайтом rtr24.ru.

Ошибки валидации JoomShopping

У меня ошибки содержались в модулях «Обратный звонок» и в «Фильтре по магазину».

1. Ошибка The type attribute for the style element is not needed and should be omitted

<style type="text/css">

Это устаревший код, сегодня достаточно писать

<style>

2. Ошибка The type attribute is unnecessary for JavaScript resources

<script type="text/javascript">

Тоже устарел, Вместо него везде можно смело писать

<script >

3. Ошибка в «Обратном звонке»

Тут речь идет о том, на какой странице нужно оказаться после заказа обратного звонка. решаем, что на той же самой, откуда этот звонок заказывался.

Тогда в дефолтном шаблоне модуля ищем:

<form action="<?php echo JRoute::_( '', true, $params->get('usesecure')); ?>" method="post" name="feedback_form" class="form_items">

Конкретно нас интересует:

<?php echo JRoute::_( '', true, $params->get('usesecure')); ?>

Вместо этого можно написать:

<?php echo JRoute::_(/lubaja-nascha-staija); ?>

Я пишу:

<?=$_SERVER['PHP_SELF'];?>

Теперь заказав звонок, клиент магазина останется на странице с тем же товаром (вдруг он его еще не рассмотрел?).

4. Ошибки в модуле фильра товаров JoomShopping

В папке:

modulesmod_jshopping_unijax_filtertmpldefault

Открываем файлы:

vendor.php
manufacturer.php
label.php
delivery_time.php
characteristic.php
category.php
availability.php

И с помощью «Найти-Заменить» в Notepad++ во всех файлах сразу меняем:

value=""></option>

на:

value="">&nbsp;</option>

5. The itemprop attribute was specified, but the element is not a property of any item

В файле шаблона Joomla index.php

Ищем:

<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">

И делаем:

<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" itemscope itemtype="http://schema.org/WebPage">

На этом месте, магазин который я сейчас разрабатываю, начал показывать 0 ошибок в валидаторе.

Вытяжка из книги «ASP.NET Core разработка приложений»

Аннотации данных
В кодовой базе осталось еще одно последнее место, которое может содержать лока-
лизуемый текст. Аннотации данных, используемые в классах моделей представле-
ний, позже используются тег-хелперами в Razor для отображения соответствую-
щих меток и сообщений об ошибках проверки. Рассмотрим класс LoginViewModel,
используемый в представлении Account/Login.
Класс LoginViewModel, используемый в Account/Login

public class LoginViewModel 
{ 
[Required(ErrorMessage = "Email is required")] 
[EmailAddress(ErrorMessage = "Not a valid email address")] 
[Display(Name= "Email")] 
public string Email { get; set; } 
[Required(ErrorMessage = "Password is required")] 
[DataType(DataType.Password)] 
[Display(Name="Password")] 
public string Password { get; set; } 
[Display(Name = "Remember me?")] 
public bool RememberMe { get; set; } 
} 

Локализованные версии сообщений об ошибках аннотаций данных загружа-
ются во время выполнения из файлов ресурсов с использованием соглашений
об именах, сходных с теми, которые использует IStringLocalizer. Текст для ка-
надского французского может загружаться из файла ресурсов Resources/Models.
AccountViewModels.LoginViewModel.fr-CA.resx.
Учтите, что на момент написания книги значения Name, указанные в атрибуте
Display, не локализуются. Локализация отображаемых имен будет поддерживать-
ся в ASP.NET Core MVC 1.1 при выпуске.

В прошлых статьях был рассмотрен механизм валидации принимаемых данных. Рекомендуем посмотреть эти статьи:

  • Проверка принимаемых данных в Laravel
  • Проверка принимаемых данных в Laravel (часть 2)

В этой статье будет подробнее описан способ изменения сообщений, которые выдаются в процессе обработки ошибок.

Изменение сообщений об ошибках

Существует несколько способов для задания своих текстов сообщений об ошибках валидации. Первый — можно передать текст сообщения третьим аргументом для метода «make» класса «Validator»:

<?php
$messages = [
   'required' => 'Необходимо заполнить поле :attribute.',
];

$validator = Validator::make($input, $rules, $messages);
?>

Обратите внимание на «:attribute» в тексте сообщения. Оно будет заменено на имя передаваемого поля. Приведём другие примеры автоматической подстановки таких значений:

<?php
$messages = [
   'same'    => ':attribute и :other должны совпадать.',
   'size'    => ':attribute должен быть равен :size.',
   'between' => ':attribute должен быть между :min и :max.',
   'in'      => ':attribute должен иметь один из следующих типов: :values',
];
?>

Если нужно установить текст ошибки только для конкретного поля, а не для всех подобных ошибок во всех полях, то необходимо записать его через точку «имя_атрибута.правило»:

<?php
$messages = [
   'email.required' => 'Нам надо знать ваш e-mail!',
];
?>

Сообщения на разных языках

Ситуация с передачей текста сообщения напрямую в «validator» встречается довольно редко. Обычно сообщения записываются в языковом файле resources/lang/xx/validation.php. Там они записываются

<?php
'custom' => [
   'email' => [
      'required' => 'Пожалуйста, введите свой e-mail',
   ],
],
?>

Кроме того в этом файле файле можно указывать свои шаблоны для замены (как с «:attribute»):

<?php
'attributes' => [
   'email' => 'адрес электронной почты',
],
?>

Была ли статья полезной?

Была ли эта статья полезна?

Есть вопрос?

хостинг для сайтов

Закажите недорогой хостинг

Заказать

всего от 290 руб

Изменение сообщений об ошибках
При необходимости вы можете задать свои сообщения об ошибках проверки ввода вместо изначальных. Для этого есть несколько способов. Во-первых, вы можете передать свои сообщения третьим аргументом метода Validator::make():

$messages = [
  'required' => 'Необходимо указать :attribute.',
];

$validator = Validator::make($input, $rules, $messages);
В этом примере обозначение :attribute будет заменено именем проверяемого поля. Вы можете использовать и другие обозначения. Например:

$messages = [
  'same'    => ':attribute и :other должны совпадать.',
  'size'    => ':attribute должен быть равен :size.',
  'between' => ':attribute должен быть между :min и :max.',
  'in'      => ':attribute должен иметь один из следующих типов: :values',
];

Указание своего сообщения для конкретного атрибута

Иногда вам может понадобиться указать своё сообщения только для конкретного поля. Вы можете сделать это с помощью «точечной» записи. Сначала укажите имя атрибута, а затем правило:

$messages = [
  'email.required' => 'Нам надо знать ваш e-mail!',
];

Указание своих сообщений в языковых файлах

В большинстве случаев вы будете указывать свои сообщения в языковом файле, а не передавать их напрямую в Validator. Для этого добавьте свои сообщения в массив custom в языковом файле resources/lang/xx/validation.php:

PHP
'custom' => [
  'email' => [
    'required' => 'Нам надо знать ваш e-mail!',
  ],
],

Ссылка на доку https://laravel.com/docs/7.x/validation#introduction

Сообщения ошибок валидации Laravel из коробки вываливаются на английском языке. Чтобы сообщения были на русском языке, нужно сделать пару шагов.

1. В файле конфигурации config/app.php ставим ‘locale’ => ‘ru’, указывая тем самым, что наше приложение имеет русский язык.

2. В папке resources/lang создаем папку ru и в нее закачиваем файл validation.php, который берем вот отсюда https://github.com/caouecs/Laravel-lang/tree/master/src/ru.

Теперь сообщения будут появляться на русском языке.

Свои аттрибуты можно добавлять в блок, который находится в конце файла.

'attributes' => [
'name'                  => 'Имя',
'username'              => 'Никнейм',
'email'                 => 'E-Mail адрес',
'first_name'            => 'Имя',
'last_name'             => 'Фамилия',
'password'              => 'Пароль',
'password_confirmation' => 'Подтверждение пароля',
'city'                  => 'Город',
'country'               => 'Страна',
'address'               => 'Адрес',
'phone'                 => 'Телефон',
'mobile'                => 'Моб. номер',
'age'                   => 'Возраст',
'sex'                   => 'Пол',
'gender'                => 'Пол',
'day'                   => 'День',
'month'                 => 'Месяц',
'year'                  => 'Год',
'hour'                  => 'Час',
'minute'                => 'Минута',
'second'                => 'Секунда',
'title'                 => 'Наименование',
'content'               => 'Контент',
'description'           => 'Описание',
'excerpt'               => 'Выдержка',
'date'                  => 'Дата',
'time'                  => 'Время',
'available'             => 'Доступно',
'size'                  => 'Размер',
],

Метки: Валидация

Вам понравиться

Можно передавать сообщения прямо в Validator

$messages = array(
    'required' => 'Поле :attribute должно быть заполнено.',
);

$validator = Validator::make($input, $rules, $messages);

строка :attribute будет заменена на имя проверяемого поля

Так же можно добавлять сообщения в файл локализации, например:app/lang/xx/validation.php

'custom' => array(
    'email' => array(
        'required' => 'Нам нужно знать ваш e-mail адрес!',
    ),
),

В прошлых статьях был рассмотрен механизм валидации принимаемых данных. Рекомендуем посмотреть эти статьи:

  • Проверка принимаемых данных в Laravel
  • Проверка принимаемых данных в Laravel (часть 2)

В этой статье будет подробнее описан способ изменения сообщений, которые выдаются в процессе обработки ошибок.

Изменение сообщений об ошибках

Существует несколько способов для задания своих текстов сообщений об ошибках валидации. Первый — можно передать текст сообщения третьим аргументом для метода «make» класса «Validator»:

<?php
$messages = [
   'required' => 'Необходимо заполнить поле :attribute.',
];

$validator = Validator::make($input, $rules, $messages);
?>

Обратите внимание на «:attribute» в тексте сообщения. Оно будет заменено на имя передаваемого поля. Приведём другие примеры автоматической подстановки таких значений:

<?php
$messages = [
   'same'    => ':attribute и :other должны совпадать.',
   'size'    => ':attribute должен быть равен :size.',
   'between' => ':attribute должен быть между :min и :max.',
   'in'      => ':attribute должен иметь один из следующих типов: :values',
];
?>

Если нужно установить текст ошибки только для конкретного поля, а не для всех подобных ошибок во всех полях, то необходимо записать его через точку «имя_атрибута.правило»:

<?php
$messages = [
   'email.required' => 'Нам надо знать ваш e-mail!',
];
?>

Сообщения на разных языках

Ситуация с передачей текста сообщения напрямую в «validator» встречается довольно редко. Обычно сообщения записываются в языковом файле resources/lang/xx/validation.php. Там они записываются

<?php
'custom' => [
   'email' => [
      'required' => 'Пожалуйста, введите свой e-mail',
   ],
],
?>

Кроме того в этом файле файле можно указывать свои шаблоны для замены (как с «:attribute»):

<?php
'attributes' => [
   'email' => 'адрес электронной почты',
],
?>

Была ли статья полезной?

Была ли эта статья полезна?

Есть вопрос?

хостинг для сайтов

Закажите недорогой хостинг

Заказать

всего от 290 руб

Сообщение об ошибках формируется в текущей локализации Laravel.
configapp.php Текущая локлизация: 'locale' => 'en',

Адрес локализации: resourceslangenvalidation.php

Например, для обязательного поля это: 'required'             => 'The :attribute field is required.',
:attribute — это переменная, которая потом будет заменена на имя поля.

Можно добавлять пользовательские сообщения, не меняя стандартные.
В этой ячейки можно описать свои правила:
'custom' => [
 'attribute-name' => [
 'rule-name' => 'custom-message',
 ],
 ],


Напишем свои правила:
'custom' => [
 'name' => [
 'required' => 'Поле name обязательно к заполнению',
 ],
 ],

Идем в файл: appHttpRequestsContactRequest.php
public function rules()
 {
 return [
 'name' => 'required',
 'email' => 'max:5|required' // не более 5 символов
 ];
 }

Файл resourceslangenvalidation.php
 'custom' => [
 'name' => [
 'required' => 'Поле name обязательно к заполнению',
 ],
 'email' => [
 'max' => 'Максимально допустимое количество символов - :max',
 'required' => 'E-mail обязателен'
 ]
 ],

Опишем пользовательские сообщения для правила required.
Если мы используем пользовательские сообщения, то сообщения локализации не используются фреймворком.
Идем в файл: appHttpRequestsContactRequest.php

public function messages()
 {
 return [
 'required' => 'Данное поле :attribute обязательно к заполнению',
 ];
 }

Если данное сообщение необходимо только для поля name:
 public function messages()
    {
        return [
            'name.required' => 'Данное поле :attribute обязательно к заполнению',
        ];
    }


или так:

 public function messages()
 {
 return [
 'name.required' => 'Данное поле :attribute обязательно к заполнению',
 'email.max' => 'Максимально допустимое количество символов - :max',
 ];
 }

Изменим контроллер  в appHttpControllersAdminContactController.php

 public function store(Request $request, $id=FALSE) {
 // Если запрос - метод post, то валидируем данные:
 if($request->isMethod('post')) {
 
 $messages = [
 'name.required' => 'Данное поле :attribute обязательно к заполнению',
 'email.max' => 'Максимально допустимое количество символов - :max',
 ];
 
 $validator = Validator::make($request->all(), [ 'name' => 'required'
 ], $messages);
 
 // Если валидация была завершена с ошибками
 if($validator->fails()) {
 return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
 } 
 }
 
 return view('default.contact', ['title'=>'Contacts']);
 }
Если не заполнить поле name, то выведется ошибка.

Распечатаем объект ошибок:
public function store(Request $request, $id=FALSE) {
 // Если запрос - метод post, то валидируем данные:
 if($request->isMethod('post')) {
 
 $messages = [
 'name.required' => 'Данное поле :attribute обязательно к заполнению',
 'email.max' => 'Максимально допустимое количество символов - :max',
 ];
 
 $validator = Validator::make($request->all(), [
 'name' => 'required'
 ], $messages);
 
 // Если валидация была завершена с ошибками
 if($validator->fails()) {
  $messages = $validator->errors();
 dump($messages);
 // return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
 } 
 }
 
 return view('default.contact', ['title'=>'Contacts']);
 }

Выводит:
MessageBag {#200 ▼
  #messages: array:1 [▼
    "name" => array:1 [▼
      0 => "Данное поле name обязательно к заполнению"
    ]
  ]
  #format: ":message"
}

Если мы напишем:
 $messages = $validator->errors();
 dump($messages->all());

То у нас выведется массив ошибок:
array:1 [▼
  0 => "Данное поле name обязательно к заполнению"
]

Или
dump($messages->first('name'));
Выводит:  Данное поле name обязательно к заполнению

Если нам нужны все сообщения об ошибках, то используем метод get().
dump($messages->get('name')); // в кавычках используем имя интересующего поля

Метод has() проверяет есть ли для конкретного поля сообщения об ошибках.
 if($validator->fails()) {
 $messages = $validator->errors();
 
 // если для поля name есть сообщения об ошибках, то отобразим их на экране
 if ($messages->has('name')) {
 dump($messages->get('name'));
 } 
 } 

Можно обернуть сообщения в теге так:
 if($validator->fails()) {
 $messages = $validator->errors();
 
 // если для поля name есть сообщения об ошибках, то отобразим их на экране
 if ($messages->has('name')) {
 dump($messages->all('<p> :message </p>')); // метка :message будет заменена сообщением об ошибке
 } 
 
 } 
Выводит: array:2 [▼
  0 => "<p> Данное поле name обязательно к заполнению </p>"
  1 => "<p> E-mail обязателен </p>"
]

Или для одного поля: dump($messages->first('name', '<p> :message </p>'));

Иногда нужно выполнить какое-то действие сразу после создания валидатора.
Метод after() позволяет описать функцию, которая выполнится сразу после создания валидатора.

if($request->isMethod('post')) {
        
            $messages = [
                'name.required' => 'Данное поле :attribute обязательно к заполнению',
                'email.max' => 'Максимально допустимое количество символов - :max',
            ];
            
            $validator = Validator::make($request->all(), [
                'name' => 'required',
                'email' => 'required'
            ], $messages);
            
            $validator->after(function($validator) {
                $validator->errors()->add('name', 'Дополнительное сообщение');
            });
                
            // Если валидация была завершена с ошибками
            if($validator->fails()) {
                $messages = $validator->errors();  
                
                return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
            } 
        }
Выводятся ошибки:
 Данное поле name обязательно к заполнению
 Дополнительное сообщение
 E-mail обязателен

Правило sometimes
$validator = Validator::make($request->all(), [
 'name' => 'required',
 'email' => 'sometimes|required' // поле обязательно к заполнению, если оно присутствует в объекте request
 ], 

Метод  sometimes описывает правила, которые будут применены к полям, если функция-обработчик вернет истину. 

public function store(Request $request, $id=FALSE) {
        // Если запрос - метод post, то валидируем данные:
        if($request->isMethod('post')) {
        
            $messages = [
                'name.required' => 'Данное поле :attribute обязательно к заполнению',
                'email.max' => 'Максимально допустимое количество символов - :max',
            ];
            
            $validator = Validator::make($request->all(), [
                'name' => 'required',
                //'email' => 'required' // поле обязательно к заполнению, если оно присутствует
            ], $messages);
            
            // $input - объект входных данных
            // Если длина имени >= 10, то поле email обязательно к заполнению
            $validator->sometimes('email', 'required', function($input) {
                return strlen($input->name) >= 10;
            });
            
                           
            // Если валидация была завершена с ошибками
            if($validator->fails()) {
                $messages = $validator->errors();                 
                return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
            } 
        }
        
        return view('default.contact', ['title'=>'Contacts']);
    }
Метод failed()
public function store(Request $request, $id=FALSE) {
 // Если запрос - метод post, то валидируем данные:
 if($request->isMethod('post')) {
 
 $messages = [
 'name.required' => 'Данное поле :attribute обязательно к заполнению',
 'email.max' => 'Максимально допустимое количество символов - :max',
 ];
 
 $validator = Validator::make($request->all(), [
 'name' => 'required',
 //'email' => 'required' // поле обязательно к заполнению, если оно присутствует
 ], $messages);
 
 // $input - объект входных данных
 // Если длина имени >= 10, то поле email обязательно к заполнению
 $validator->sometimes('email', 'required', function($input) {
 return strlen($input->name) >= 10;
 });
 
 // $validator->after(function($validator) {
 // $validator->errors()->add('name', 'Дополнительное сообщение');
 // });
 
 // Если валидация была завершена с ошибками
 if($validator->fails()) {
 $messages = $validator->errors(); 
 dump($validator->failed()); // массив с ошибками валидации данных
 exit();
 return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
 } 
 }  

Выводит массив:


   array:1 [▼
  "name" => array:1 [▼
    "Required" => []
  ]
]



Вытяжка из книги «ASP.NET Core разработка приложений»

Аннотации данных
В кодовой базе осталось еще одно последнее место, которое может содержать лока-
лизуемый текст. Аннотации данных, используемые в классах моделей представле-
ний, позже используются тег-хелперами в Razor для отображения соответствую-
щих меток и сообщений об ошибках проверки. Рассмотрим класс LoginViewModel,
используемый в представлении Account/Login.
Класс LoginViewModel, используемый в Account/Login

public class LoginViewModel 
{ 
[Required(ErrorMessage = "Email is required")] 
[EmailAddress(ErrorMessage = "Not a valid email address")] 
[Display(Name= "Email")] 
public string Email { get; set; } 
[Required(ErrorMessage = "Password is required")] 
[DataType(DataType.Password)] 
[Display(Name="Password")] 
public string Password { get; set; } 
[Display(Name = "Remember me?")] 
public bool RememberMe { get; set; } 
} 

Локализованные версии сообщений об ошибках аннотаций данных загружа-
ются во время выполнения из файлов ресурсов с использованием соглашений
об именах, сходных с теми, которые использует IStringLocalizer. Текст для ка-
надского французского может загружаться из файла ресурсов Resources/Models.
AccountViewModels.LoginViewModel.fr-CA.resx.
Учтите, что на момент написания книги значения Name, указанные в атрибуте
Display, не локализуются. Локализация отображаемых имен будет поддерживать-
ся в ASP.NET Core MVC 1.1 при выпуске.

  • Тексты для ошибки 404
  • Тексты для исправления речевых ошибок
  • Тексты для исправления ошибок 2 класс школа россии
  • Текстуры для гарисмода чтобы не было еррор ошибок
  • Текстура проверка текста на ошибки