CakePHP - Manual/CommonTasks/DataValidation/MultipleRules /wiki/Manual/CommonTasks/DataValidation/MultipleRules History/revisions of CakePHP/Manual/CommonTasks/DataValidation/MultipleRules en-us 2009-04-02 15:47:48 /wiki/Manual/CommonTasks/DataValidation/MultipleRules/show?time=2009-04-02+15%3A47%3A48 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.commontasks.datavalidation.multiplerules" href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;Multiple&nbsp;Rules</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-02+15%3A47%3A48">2009-04-02 15:47:48</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules">2009-04-02 15:48:46</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Если вы&nbsp;планируете использовать международные сообщения об&nbsp;ошибках, то&nbsp;вы можете определять сообщения об&nbsp;ошибках в&nbsp;вашем отображении:</div><br /> <b>Удалено:</b><br /> <div class="deletions">Если вы&nbsp;планируюете использовать международные сообщения об&nbsp;ошибках, то&nbsp;вы можете определять сообщения об&nbsp;ошибках в&nbsp;вашем отображении:</div></div> 2009-04-01 17:10:00 /wiki/Manual/CommonTasks/DataValidation/MultipleRules/show?time=2009-04-01+17%3A10%3A00 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;Multiple&nbsp;Rules</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-01+17%3A10%3A00">2009-04-01 17:10:00</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/MultipleRules?time=2009-04-02+15%3A47%3A48">2009-04-02 15:47:48</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><br /> Если вы&nbsp;хотите назначить множество валидационных правил для&nbsp;одного поля, то&nbsp;вот пример того, как&nbsp;это должно выглядеть:<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">$validate&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'fieldName'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'ruleName'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'rule'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'ruleName'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;доп.&nbsp;индексы,&nbsp;наподобие&nbsp;'on',&nbsp;'required',&nbsp;и&nbsp;т.д.&nbsp;идут&nbsp;здесь...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'ruleName2'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'rule'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'ruleName2'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;доп.&nbsp;индексы,&nbsp;наподобие&nbsp;'on',&nbsp;'required',&nbsp;и&nbsp;т.д.&nbsp;идут&nbsp;здесь...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;)<br />);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <br /> Как&nbsp;вы&nbsp;видите, это&nbsp;похоже на&nbsp;то, что&nbsp;мы&nbsp;делали в&nbsp;предыдущей главе. Там&nbsp;для каждого поля у&nbsp;нас был&nbsp;только один массив валидационных параметров. В&nbsp;данном случае, каждое 'fieldName' состоит из&nbsp;массива индексов правил. Каждое 'ruleName' содержит отдельный массив валидационных параметров.<br /> <br /> Это&nbsp;лучше показано в&nbsp;практическом примере:<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">$validate&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'login'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'alphanumeric'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'rule'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'alphaNumeric'</span><span style="color: #007700">,&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'message'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Разрешены&nbsp;только&nbsp;буквы&nbsp;и&nbsp;цифры.'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'last'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">true<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'minlength'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'rule'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'minLength'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'8'</span><span style="color: #007700">),&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'message'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Минимальная&nbsp;длина&nbsp;-&nbsp;8&nbsp;символов.'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">),&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;)<br />);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <br /> В&nbsp;примере, представленном выше, определены два&nbsp;правила для&nbsp;поля login: alphanumeric и&nbsp;minLength. Как&nbsp;вы&nbsp;видите, каждое правило идентифицировано индексом. В&nbsp;данном случае имена индексов совпадают с&nbsp;именами правил, которые они&nbsp;используют, но&nbsp;именем индекса может быть любое имя, которое вы&nbsp;выберете.<br /> <br /> По&nbsp;умолчанию <!--notypo-->CakePHP<!--/notypo--> пытается выполнить проверку поля, используя все&nbsp;валидационные правила, назначенные для&nbsp;этого поля и&nbsp;возвращает сообщение об&nbsp;ошибке для&nbsp;последнего невыполненного правила. Но&nbsp;если индекс 'last' установлен в&nbsp;true для&nbsp;правила и&nbsp;оно не&nbsp;выполняется, тогда возвращается сообщение об&nbsp;ошибке для&nbsp;этого правила и&nbsp;оставшиеся правила не&nbsp;проверяются. Таким образом, если вы&nbsp;предпочитаете показать сообщение об&nbsp;ошибке для&nbsp;первого невыполненного правила, то&nbsp;устанавливайте 'last' =&gt; true для&nbsp;каждого правила.<br /> <br /> Если вы&nbsp;планируюете использовать международные сообщения об&nbsp;ошибках, то&nbsp;вы можете определять сообщения об&nbsp;ошибках в&nbsp;вашем отображении:<br /> <br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$form</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #DD0000">'login'</span><span style="color: #007700">,&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'label'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">__</span><span style="color: #007700">(</span><span style="color: #DD0000">'Login'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'error'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'alphanumeric'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">__</span><span style="color: #007700">(</span><span style="color: #DD0000">'Разрешены&nbsp;только&nbsp;буквы&nbsp;и&nbsp;цифры'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'minlength'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">__</span><span style="color: #007700">(</span><span style="color: #DD0000">'Минимальная&nbsp;длина&nbsp;-&nbsp;8&nbsp;символов'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;)<br />);<br /><br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <br /> Теперь поле полностью интернационализировано и&nbsp;вы можете удалить сообщения из&nbsp;модели. Дополнительную информацию о&nbsp;функции __() читайте в&nbsp;главе &laquo;Локализация и&nbsp;интернационализация&raquo;.<br /> <br /> <span class="missingpage">&lt;&lt; Одно правило для&nbsp;поля</span><a href="/wiki/OneRulePerField/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Встроенные правила валидации &gt;&gt;</span><a href="/wiki/CoreRules/edit?add=1" title="Создать эту страницу">?</a></div></div>