CakePHP - Manual/CommonTasks/DataValidation/OneRulePerField /wiki/Manual/CommonTasks/DataValidation/OneRulePerField History/revisions of CakePHP/Manual/CommonTasks/DataValidation/OneRulePerField en-us 2009-03-31 23:10:35 /wiki/Manual/CommonTasks/DataValidation/OneRulePerField/show?time=2009-03-31+23%3A10%3A35 <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.oneruleperfield" href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;One&nbsp;Rule&nbsp;Per&nbsp;Field</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+23%3A10%3A35">2009-03-31 23:10:35</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField">2009-04-01 17:11:27</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h877-1"></a><h3>on</h3> Индексу 'on' может быть присвоено одно из&nbsp;следующих значений: 'update' или&nbsp;'create'. Это&nbsp;предоставляет механизм, который позволяет применять определенное правило или&nbsp;во&nbsp;время создания новой записи, или&nbsp;во&nbsp;время обновления.<br /> Если правило определено с&nbsp;'on' =&gt; 'create', то&nbsp;оно будет применено во&nbsp;время создания новой записи. Подобным образом, если определено 'on' =&gt; 'update', то&nbsp;правило будет выполняться во&nbsp;время обновления записи.<br /> Значения по&nbsp;умолчанию для&nbsp;'on' &ndash; null. Т.е. правило будет действовать в&nbsp;обоих случаях: во&nbsp;время создания записи и&nbsp;во время обновления.<a name="h877-2"></a><h3>message</h3> Индекс 'message' позволяет вам&nbsp;определить собственное сообщение об&nbsp;ошибке валидации для&nbsp;правила:<br /> <div class="indent"><div class="indent"><div class="indent"><div class="indent">'rule' =&gt; array('minLength', 8),<br /> 'message' =&gt; 'Длина пароля должна быть не&nbsp;менее 8 символов'</div></div></div></div> <span class="missingpage">&lt;&lt; Простые правила</span><a href="/wiki/SimpleRules/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Множество правил для&nbsp;поля &gt;&gt;</span><a href="/wiki/MultipleRules/edit?add=1" title="Создать эту страницу">?</a></div></div> 2009-03-31 23:09:02 /wiki/Manual/CommonTasks/DataValidation/OneRulePerField/show?time=2009-03-31+23%3A09%3A02 <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/OneRulePerField" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;One&nbsp;Rule&nbsp;Per&nbsp;Field</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+23%3A09%3A02">2009-03-31 23:09:02</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+23%3A10%3A35">2009-03-31 23:10:35</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Если индекс 'login' представлен, но&nbsp;сопутствующее значение пустое, <br /> то&nbsp;валидация пройдет успешно. 'required' =&gt; true контролирует только наличие индекса поля.</div><br /> <b>Удалено:</b><br /> <div class="deletions">Если индекс 'login' представлен, но&nbsp;сопутствующее значение пустое, то&nbsp;валидация пройдет успешно. 'required' =&gt; true контролирует только наличие индекса поля.</div></div> 2009-03-31 22:35:46 /wiki/Manual/CommonTasks/DataValidation/OneRulePerField/show?time=2009-03-31+22%3A35%3A46 <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/OneRulePerField" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;One&nbsp;Rule&nbsp;Per&nbsp;Field</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+22%3A35%3A46">2009-03-31 22:35:46</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+23%3A09%3A02">2009-03-31 23:09:02</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Индекс 'rule' определяет метод валидации и&nbsp;принимает или&nbsp;отдельное значение, или&nbsp;массив. Значением 'rule' может быть имя&nbsp;метода модели, метода встроенного класса Validation, или&nbsp;регулярное выражение. Полный перечень всех встроенных правил смотрите в&nbsp;главе &laquo;Встроенные правила валидации&raquo;.<br /> Если правило не&nbsp;требует параметров, то&nbsp;'rule' может содержать просто одно значение, например:<br /> <div class="indent"><div class="indent">'login' =&gt; array(<br /> <div class="indent"><div class="indent">'rule' =&gt; 'alphaNumeric'</div></div></div></div> Если правило требует некоторые параметры (подобные max, min&nbsp;или range), то&nbsp;'rule' должно быть массивом:<br /> <div class="indent"><div class="indent">'password' =&gt; array(<br /> <div class="indent"><div class="indent">'rule' =&gt; array('minLength', 8)</div></div></div></div> Помните, что&nbsp;индекс 'rule' требуется для&nbsp;определения правил на&nbsp;основе массивов.<a name="h877-1"></a><h3>required</h3> Этому индексу должно быть присвоено значение типа boolean. Если 'required' =&gt; true, то&nbsp;поле должно быть представлено в&nbsp;массиве данных. Например, если правило валидации определено таким образом:<br /> <div class="indent"><div class="indent">'login' =&gt; array(<br /> <div class="indent"><div class="indent">'rule' =&gt; 'alphaNumeric',<br /> 'required' =&gt; true</div></div></div></div> Тогда данные, посланные методу save() должны содержать данные для&nbsp;поля 'login'. Если это&nbsp;не&nbsp;так, то&nbsp;валидация не&nbsp;будет пройдена. Значение по&nbsp;умолчанию для&nbsp;этого индекса &ndash; false.<br /> Если индекс 'login' представлен, но&nbsp;сопутствующее значение пустое, то&nbsp;валидация пройдет успешно. 'required' =&gt; true контролирует только наличие индекса поля.<a name="h877-2"></a><h3>allowEmpty</h3> Индексу allowEmpty должно быть присвоено значения типа boolean. Если true, то&nbsp;правило валидации будет пропущено, когда значение пустое.<br /> Значение по&nbsp;умолчанию &ndash; false, таким образом, правило будет выполняться (это не&nbsp;значит, что&nbsp;валидация не&nbsp;будет пройдена для&nbsp;пустого значения; если определено правило принимать пустые значения, как&nbsp;правильные, то&nbsp;ошибка проверки данных не&nbsp;будет генерироваться).</div></div> 2009-03-25 16:03:54 /wiki/Manual/CommonTasks/DataValidation/OneRulePerField/show?time=2009-03-25+16%3A03%3A54 <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/OneRulePerField" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Data&nbsp;Validation&nbsp;/&nbsp;One&nbsp;Rule&nbsp;Per&nbsp;Field</a> за <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-25+16%3A03%3A54">2009-03-25 16:03:54</a> и <a href="/wiki/Manual/CommonTasks/DataValidation/OneRulePerField?time=2009-03-31+22%3A35%3A46">2009-03-31 22:35:46</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Этот способ определения позволяет лучше контролировать работу правил валидации. Но&nbsp;перед тем, как&nbsp;мы&nbsp;обсудим это, давайте посмотрим на&nbsp;образец добавления правила для&nbsp;отдельного поля: <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">'fieldName1'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(<br />&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">,&nbsp;</span><span style="color: #FF8000">//&nbsp;или:&nbsp;array('ruleName',&nbsp;'param1',&nbsp;'param2'&nbsp;...)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'required'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'allowEmpty'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'on'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'create'</span><span style="color: #007700">,&nbsp;</span><span style="color: #FF8000">//&nbsp;или:&nbsp;'update'<br />&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;ошибке'<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">)<br />);<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <!--notypo--><div class="code"><code><span style="color: #000000"> Индекс&nbsp;'rule'&nbsp;обязателен.&nbsp;Если&nbsp;вы&nbsp;установите&nbsp;только&nbsp;'required'&nbsp;=&gt;&nbsp;true,&nbsp;то&nbsp;валидация&nbsp;<br />не&nbsp;будет&nbsp;корректно&nbsp;функционировать.&nbsp;Это&nbsp;потому,&nbsp;что&nbsp;'required'&nbsp;не&nbsp;является&nbsp;правилом.</span> </code></div><!--/notypo--><br /> Как&nbsp;вы&nbsp;видите, каждое поле (в данном случае показано только одно поле) ассоциируется с&nbsp;массивом, который содержит пять индексов: 'rule', 'required', 'allowEmpty', 'on' и&nbsp;'message'. Давайте ближе познакомимся с&nbsp;этими индексами.<br /> <hr noshade="noshade" size="1" /><a name="h877-1"></a><h3>rule</h3></div></div>