<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>CakePHP - Manual/CommonTasks/DataValidation/MultipleRules</title>
<link>http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules</link>
<description>History/revisions of CakePHP/Manual/CommonTasks/DataValidation/MultipleRules</description>
<language>en-us</language>
<item>
<title>2009-04-02 15:47:48</title>
<link>http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules/show?time=2009-04-02+15%3A47%3A48</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.multiplerules" href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules" class="">/Manual&amp;nbsp;/&amp;nbsp;Common&amp;nbsp;Tasks&amp;nbsp;/&amp;nbsp;Data&amp;nbsp;Validation&amp;nbsp;/&amp;nbsp;Multiple&amp;nbsp;Rules&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-02+15%3A47%3A48">2009-04-02 15:47:48&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules">2009-04-02 15:48:46&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Если вы&amp;nbsp;планируете использовать международные сообщения об&amp;nbsp;ошибках, то&amp;nbsp;вы можете определять сообщения об&amp;nbsp;ошибках в&amp;nbsp;вашем отображении:&lt;/div>&lt;br />
&lt;b>Удалено:&lt;/b>&lt;br />
&lt;div class="deletions">Если вы&amp;nbsp;планируюете использовать международные сообщения об&amp;nbsp;ошибках, то&amp;nbsp;вы можете определять сообщения об&amp;nbsp;ошибках в&amp;nbsp;вашем отображении:&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-04-01 17:10:00</title>
<link>http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules/show?time=2009-04-01+17%3A10%3A00</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  href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules" class="">/Manual&amp;nbsp;/&amp;nbsp;Common&amp;nbsp;Tasks&amp;nbsp;/&amp;nbsp;Data&amp;nbsp;Validation&amp;nbsp;/&amp;nbsp;Multiple&amp;nbsp;Rules&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-01+17%3A10%3A00">2009-04-01 17:10:00&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-02+15%3A47%3A48">2009-04-02 15:47:48&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;br />
Если вы&amp;nbsp;хотите назначить множество валидационных правил для&amp;nbsp;одного поля, то&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;?&lt;br />&lt;/span>&lt;span style="color: #007700">var&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$validate&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'fieldName'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'ruleName'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'rule'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'ruleName'&lt;/span>&lt;span style="color: #007700">,&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;доп.&amp;nbsp;индексы,&amp;nbsp;наподобие&amp;nbsp;'on',&amp;nbsp;'required',&amp;nbsp;и&amp;nbsp;т.д.&amp;nbsp;идут&amp;nbsp;здесь...&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">),&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'ruleName2'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'rule'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'ruleName2'&lt;/span>&lt;span style="color: #007700">,&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;доп.&amp;nbsp;индексы,&amp;nbsp;наподобие&amp;nbsp;'on',&amp;nbsp;'required',&amp;nbsp;и&amp;nbsp;т.д.&amp;nbsp;идут&amp;nbsp;здесь...&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">)&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br />);&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;видите, это&amp;nbsp;похоже на&amp;nbsp;то, что&amp;nbsp;мы&amp;nbsp;делали в&amp;nbsp;предыдущей главе. Там&amp;nbsp;для каждого поля у&amp;nbsp;нас был&amp;nbsp;только один массив валидационных параметров. В&amp;nbsp;данном случае, каждое 'fieldName' состоит из&amp;nbsp;массива индексов правил. Каждое 'ruleName' содержит отдельный массив валидационных параметров.&lt;br />
&lt;br />
Это&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;?&lt;br />&lt;/span>&lt;span style="color: #007700">var&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$validate&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'login'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'alphanumeric'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'rule'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'alphaNumeric'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'message'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Разрешены&amp;nbsp;только&amp;nbsp;буквы&amp;nbsp;и&amp;nbsp;цифры.'&lt;/span>&lt;span style="color: #007700">,&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'last'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">true&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">),&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'minlength'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'rule'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;/span>&lt;span style="color: #DD0000">'minLength'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'8'&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'message'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Минимальная&amp;nbsp;длина&amp;nbsp;-&amp;nbsp;8&amp;nbsp;символов.'&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">),&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br />);&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;правила для&amp;nbsp;поля login: alphanumeric и&amp;nbsp;minLength. Как&amp;nbsp;вы&amp;nbsp;видите, каждое правило идентифицировано индексом. В&amp;nbsp;данном случае имена индексов совпадают с&amp;nbsp;именами правил, которые они&amp;nbsp;используют, но&amp;nbsp;именем индекса может быть любое имя, которое вы&amp;nbsp;выберете.&lt;br />
&lt;br />
По&amp;nbsp;умолчанию &lt;!--notypo-->CakePHP&lt;!--/notypo--> пытается выполнить проверку поля, используя все&amp;nbsp;валидационные правила, назначенные для&amp;nbsp;этого поля и&amp;nbsp;возвращает сообщение об&amp;nbsp;ошибке для&amp;nbsp;последнего невыполненного правила. Но&amp;nbsp;если индекс 'last' установлен в&amp;nbsp;true для&amp;nbsp;правила и&amp;nbsp;оно не&amp;nbsp;выполняется, тогда возвращается сообщение об&amp;nbsp;ошибке для&amp;nbsp;этого правила и&amp;nbsp;оставшиеся правила не&amp;nbsp;проверяются. Таким образом, если вы&amp;nbsp;предпочитаете показать сообщение об&amp;nbsp;ошибке для&amp;nbsp;первого невыполненного правила, то&amp;nbsp;устанавливайте 'last' =&amp;gt; true для&amp;nbsp;каждого правила.&lt;br />
&lt;br />
Если вы&amp;nbsp;планируюете использовать международные сообщения об&amp;nbsp;ошибках, то&amp;nbsp;вы можете определять сообщения об&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;?&lt;br />&lt;/span>&lt;span style="color: #007700">echo&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$form&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">input&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">'login'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'label'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">__&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">'Login'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">true&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: #DD0000">'error'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'alphanumeric'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">__&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">'Разрешены&amp;nbsp;только&amp;nbsp;буквы&amp;nbsp;и&amp;nbsp;цифры'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">true&lt;/span>&lt;span style="color: #007700">),&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'minlength'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">__&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">'Минимальная&amp;nbsp;длина&amp;nbsp;-&amp;nbsp;8&amp;nbsp;символов'&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">true&lt;/span>&lt;span style="color: #007700">)&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br />);&lt;br />&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;модели. Дополнительную информацию о&amp;nbsp;функции __() читайте в&amp;nbsp;главе &amp;laquo;Локализация и&amp;nbsp;интернационализация&amp;raquo;.&lt;br />
&lt;br />
&lt;span class="missingpage">&amp;lt;&amp;lt; Одно правило для&amp;nbsp;поля&lt;/span>&lt;a href="http://cake-php.ru/wiki/OneRulePerField/edit?add=1" title="Создать эту страницу">?&lt;/a> | &lt;span class="missingpage">Встроенные правила валидации &amp;gt;&amp;gt;&lt;/span>&lt;a href="http://cake-php.ru/wiki/CoreRules/edit?add=1" title="Создать эту страницу">?&lt;/a>&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
