<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>CakePHP - Manual/CommonTasks/DataValidation/FromController</title>
<link>http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/FromController</link>
<description>History/revisions of CakePHP/Manual/CommonTasks/DataValidation/FromController</description>
<language>en-us</language>
<item>
<title>2009-04-01 17:13:18</title>
<link>http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/FromController/show?time=2009-04-01+17%3A13%3A18</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a name=".manual.commontasks.datavalidation.fromcontroller" href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/FromController" class="">/Manual&amp;nbsp;/&amp;nbsp;Common&amp;nbsp;Tasks&amp;nbsp;/&amp;nbsp;Data&amp;nbsp;Validation&amp;nbsp;/&amp;nbsp;From&amp;nbsp;Controller&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/FromController?time=2009-04-01+17%3A13%3A18">2009-04-01 17:13:18&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/FromController">2009-04-11 21:30:24&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;br />
Обычно вы&amp;nbsp;будете просто использовать метод модели save, но&amp;nbsp;может быть вы&amp;nbsp;захотите проверить данные без&amp;nbsp;их&amp;nbsp;сохранения. Например, вы&amp;nbsp;можете захотеть отобразить для&amp;nbsp;пользователя некоторую дополнительную информацию непосредственно перед её сохранением в&amp;nbsp;базу данных. Проверка данных требует немного другие процессы в&amp;nbsp;отличие от&amp;nbsp;просто сохранения. &lt;br />
&lt;br />
Во-первых, передадим данные модели:&lt;br />
&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&lt;br />$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">ModelName&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">set&lt;/span>&lt;span style="color: #007700">(&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">data&amp;nbsp;&lt;/span>&lt;span style="color: #007700">);&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;br />
Затем, для&amp;nbsp;проверки, проходят ли&amp;nbsp;данные валидацию, используйте метод модели validates, который возвратит true в&amp;nbsp;случае успешной валидации или&amp;nbsp;false в&amp;nbsp;обратном случае:&lt;br />
&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&lt;br />&lt;/span>&lt;span style="color: #007700">if&amp;nbsp;(&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">ModelName&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">validates&lt;/span>&lt;span style="color: #007700">())&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;код&amp;nbsp;для&amp;nbsp;случая&amp;nbsp;успешной&amp;nbsp;валидацц&lt;br />&lt;/span>&lt;span style="color: #007700">}&amp;nbsp;else&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;код&amp;nbsp;для&amp;nbsp;случая,&amp;nbsp;когда&amp;nbsp;валидация&amp;nbsp;не&amp;nbsp;пройдена&lt;br />&lt;/span>&lt;span style="color: #007700">}&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;br />
Метод validates запускает метод invalidFields, который заполняет свойство модели validationErrors. Также метод invalidFields возвращает эти&amp;nbsp;данные в&amp;nbsp;качестве результата.&lt;br />
&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&amp;nbsp;$errors&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">ModelName&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">invalidFields&lt;/span>&lt;span style="color: #007700">();&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;содержит&amp;nbsp;массив&amp;nbsp;validationErrors&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;br />
Обратите внимание, что&amp;nbsp;данные должны быть переданы модели перед тем, как&amp;nbsp;они будут проходить проверку. Это&amp;nbsp;отличается от&amp;nbsp;метода save, который позволяет передавать ему&amp;nbsp;данные в&amp;nbsp;качестве параметра. Также помните, что&amp;nbsp;не&amp;nbsp;требуется вызывать validates перед вызовом метода save, так&amp;nbsp;как save автоматически проверит данные перед их&amp;nbsp;сохранением.&lt;br />
&lt;br />
Для&amp;nbsp;проверки множества моделей используйте следующий код:&lt;br />
&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&lt;br />&lt;/span>&lt;span style="color: #007700">if&amp;nbsp;(&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">Model&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">saveAll&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">data&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;array(&lt;/span>&lt;span style="color: #DD0000">'validate'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'only'&lt;/span>&lt;span style="color: #007700">)))&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;данные&amp;nbsp;правильные&lt;br />&lt;/span>&lt;span style="color: #007700">}&amp;nbsp;else&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;данные&amp;nbsp;некорректные&lt;br />&lt;/span>&lt;span style="color: #007700">}&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;br />
&lt;span class="missingpage">&amp;lt;&amp;lt; Пользовательские правила валидации&lt;/span>&lt;a href="http://cake-php.ru/wiki/CustomRules/edit?add=1" title="Создать эту страницу">?&lt;/a> | &lt;span class="missingpage">Чистка данных &amp;gt;&amp;gt;&lt;/span>&lt;a href="http://cake-php.ru/wiki/DataSanitization/edit?add=1" title="Создать эту страницу">?&lt;/a>&lt;br />&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
