<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3Alib%2Fformslib.php_Validation</id>
	<title>Development:lib/formslib.php Validation - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3Alib%2Fformslib.php_Validation"/>
	<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:lib/formslib.php_Validation&amp;action=history"/>
	<updated>2026-05-07T23:04:59Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:lib/formslib.php_Validation&amp;diff=12264&amp;oldid=prev</id>
		<title>Олег Давидович: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:lib/formslib.php_Validation&amp;diff=12264&amp;oldid=prev"/>
		<updated>2024-10-21T08:59:27Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:59, 21 октября 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Олег Давидович</name></author>
	</entry>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:lib/formslib.php_Validation&amp;diff=12263&amp;oldid=prev</id>
		<title>1&gt;Nakohdo: /* moodleform::validation() */  coloring the code</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:lib/formslib.php_Validation&amp;diff=12263&amp;oldid=prev"/>
		<updated>2009-06-15T14:22:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;moodleform::validation(): &lt;/span&gt;  coloring the code&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Formslib}}&lt;br /&gt;
&lt;br /&gt;
There are two ways to add validation in the forms lib.&lt;br /&gt;
&lt;br /&gt;
== MoodleQuickForm::addRule() ==&lt;br /&gt;
&lt;br /&gt;
You use this typically inside your moodleform::definition method. For example to set a field as required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$mform-&amp;gt;addElement(&amp;#039;text&amp;#039;,&amp;#039;shortname&amp;#039;, get_string(&amp;#039;shortname&amp;#039;),&amp;#039;maxlength=&amp;quot;15&amp;quot; size=&amp;quot;10&amp;quot;&amp;#039;);&lt;br /&gt;
$mform-&amp;gt;setHelpButton(&amp;#039;shortname&amp;#039;, array(&amp;#039;courseshortname&amp;#039;, get_string(&amp;#039;shortname&amp;#039;)), true);&lt;br /&gt;
$mform-&amp;gt;setDefault(&amp;#039;shortname&amp;#039;, get_string(&amp;#039;defaultcourseshortname&amp;#039;));&lt;br /&gt;
$mform-&amp;gt;addRule(&amp;#039;shortname&amp;#039;, null, &amp;#039;required&amp;#039;, null, &amp;#039;client&amp;#039;);&lt;br /&gt;
$mform-&amp;gt;setType(&amp;#039;shortname&amp;#039;, PARAM_MULTILANG);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is good documentation for this on the [http://pear.php.net/manual/en/package.html.html-quickform.intro-validation.php PEAR web site]&lt;br /&gt;
&lt;br /&gt;
In Moodle formslib you can set certain rules&amp;#039; error message to null and a default error message will automatically be used. The default messages are defined in lang/{language}/form.php. Here are the English definitions :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
$string[&amp;#039;err_alphanumeric&amp;#039;]=&amp;#039;You must enter only letters or numbers here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_email&amp;#039;]=&amp;#039;You must enter a valid email address here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_lettersonly&amp;#039;]=&amp;#039;You must enter only letters here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_maxlength&amp;#039;]=&amp;#039;You must enter not more than $a-&amp;gt;format characters here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_minlength&amp;#039;]=&amp;#039;You must enter at least $a-&amp;gt;format characters here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_nopunctuation&amp;#039;]=&amp;#039;You must enter no punctuation characters here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_nonzero&amp;#039;]=&amp;#039;You must enter a number not starting with a 0 here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_numeric&amp;#039;]=&amp;#039;You must enter a number here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_rangelength&amp;#039;]=&amp;#039;You must enter between {$a-&amp;gt;format[0]} and {$a-&amp;gt;format[1]} characters here.&amp;#039;;&lt;br /&gt;
$string[&amp;#039;err_required&amp;#039;]=&amp;#039;You must supply a value here.&amp;#039;;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== moodleform::validation() ==&lt;br /&gt;
&lt;br /&gt;
Define a method validation on your moodleform child to make your own custom validation for the form. This is done on the server side. And data_submitted will return null until the function returns no errors. You return an array of errors if there is any error or an empty array if there are no errors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
class course_edit_form extends moodleform {&lt;br /&gt;
&lt;br /&gt;
    function definition() {&lt;br /&gt;
        blah blah;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/// perform some extra moodle validation&lt;br /&gt;
    function validation($data) {&lt;br /&gt;
        $errors= array();&lt;br /&gt;
        if ($foundcourses = get_records(&amp;#039;course&amp;#039;, &amp;#039;shortname&amp;#039;, $data[&amp;#039;shortname&amp;#039;])) {&lt;br /&gt;
            if (!empty($data[&amp;#039;id&amp;#039;])) {&lt;br /&gt;
                unset($foundcourses[$data[&amp;#039;id&amp;#039;]]);&lt;br /&gt;
            }&lt;br /&gt;
            if (!empty($foundcourses)) {&lt;br /&gt;
                foreach ($foundcourses as $foundcourse) {&lt;br /&gt;
                    $foundcoursenames[] = $foundcourse-&amp;gt;fullname;&lt;br /&gt;
                }&lt;br /&gt;
                $foundcoursenamestring = implode(&amp;#039;,&amp;#039;, $foundcoursenames);&lt;br /&gt;
                $errors[&amp;#039;shortname&amp;#039;]= get_string(&amp;#039;shortnametaken&amp;#039;, &amp;#039;&amp;#039;, $foundcoursenamestring);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (empty($data[&amp;#039;enrolenddisabled&amp;#039;])){&lt;br /&gt;
            if ($data[&amp;#039;enrolenddate&amp;#039;] &amp;lt;= $data[&amp;#039;enrolstartdate&amp;#039;]){&lt;br /&gt;
                $errors[&amp;#039;enroldateendgrp&amp;#039;] = get_string(&amp;#039;enrolenddaterror&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $errors;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.9}}There is a new parameter $files in Moodle 1.9, it allows validation of uploaded files too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
    function validation($data, $files) {&lt;br /&gt;
        $errors = parent::validation($data, $files);&lt;br /&gt;
        if (empty($files[&amp;#039;userfile&amp;#039;])) {&lt;br /&gt;
            if (array_key_exists(&amp;#039;url&amp;#039;, $data)) {&lt;br /&gt;
                $errors[&amp;#039;url&amp;#039;] = get_string(&amp;#039;required&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $errors;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Moodle 1.9}}To validate a recaptcha element use the following code inside the function validation($data) {&lt;br /&gt;
:&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
if (!empty($CFG-&amp;gt;recaptchapublickey) &amp;amp;&amp;amp; !empty($CFG-&amp;gt;recaptchaprivatekey)) {&lt;br /&gt;
    $recaptcha_element = $this-&amp;gt;_form-&amp;gt;getElement(&amp;#039;recaptcha_field_name&amp;#039;);&lt;br /&gt;
    if (!empty($this-&amp;gt;_form-&amp;gt;_submitValues[&amp;#039;recaptcha_challenge_field&amp;#039;])) {&lt;br /&gt;
        $challenge_field = $this-&amp;gt;_form-&amp;gt;_submitValues[&amp;#039;recaptcha_challenge_field&amp;#039;];&lt;br /&gt;
        $response_field = $this-&amp;gt;_form-&amp;gt;_submitValues[&amp;#039;recaptcha_response_field&amp;#039;];&lt;br /&gt;
        if (true !== ($result = $recaptcha_element-&amp;gt;verify($challenge_field, $response_field))) {&lt;br /&gt;
            $errors[&amp;#039;recaptcha_field_name&amp;#039;] = $result;&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        $errors[&amp;#039;recaptcha_field_name&amp;#039;] = get_string(&amp;#039;missingrecaptchachallengefield&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>1&gt;Nakohdo</name></author>
	</entry>
</feed>