<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>заметки на полях &#187; onPHP</title>
	<atom:link href="http://svdev.ru/tag/onphp/feed/" rel="self" type="application/rss+xml" />
	<link>http://svdev.ru</link>
	<description>Блокнот разработчика</description>
	<lastBuildDate>Wed, 19 May 2010 07:42:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>onPHP 1.1 удобные формы</title>
		<link>http://svdev.ru/blog/onphp-1-1-forms/</link>
		<comments>http://svdev.ru/blog/onphp-1-1-forms/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 15:38:53 +0000</pubDate>
		<dc:creator>Дерябин Сергей</dc:creator>
				<category><![CDATA[неразобранное]]></category>
		<category><![CDATA[onPHP]]></category>

		<guid isPermaLink="false">http://svdev.ru/blog/onphp-1-1-%d1%83%d0%b4%d0%be%d0%b1%d0%bd%d1%8b%d0%b5-%d1%84%d0%be%d1%80%d0%bc%d1%8b/</guid>
		<description><![CDATA[Наконец-то формы стали более дружелюбны к разработчика. Убрали широко используемые до этого addRule&#40;&#41; вместо них теперь можно добавлять свои ошибки на поля формы в дополнение к стандартным отсутствие/неверное значение.
Еще из приятных вещей, что можно получить ошибку для конкретного поля, не придумывая для этого замысловатые конструкции (не все же ведь ошибки выводят скопом, некоторые и около [...]]]></description>
			<content:encoded><![CDATA[<p>Наконец-то формы стали более дружелюбны к разработчика. Убрали широко используемые до этого <code class="codecolorer php default"><span class="php">addRule<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> вместо них теперь можно добавлять свои ошибки на поля формы в дополнение к стандартным отсутствие/неверное значение.<br />
Еще из приятных вещей, что можно получить ошибку для конкретного поля, не придумывая для этого замысловатые конструкции (не все же ведь ошибки выводят скопом, некоторые и около полей); появились еще и описания ошибок &#8211; дополнительные поля, которые можно использовать (а можно и не использовать) по своему усмотрению.<br />
У <code class="codecolorer php default"><span class="php">PrimitiveList</span></code> больше нет методов <code class="codecolorer php default"><span class="php">setDefaultAction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> и <code class="codecolorer php default"><span class="php">getActualValue</span></code> &#8211; надо просто установить значение <code class="codecolorer php default"><span class="php">setValue<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>, и оно и будет дефолтным в случае чего, при получении через <code class="codecolorer php default"><span class="php">getChoiceValue<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>.<br />
<span id="more-413"></span><br />
Небольшой примерчик:</p>
<div class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">const</span> ACTION_REGISTRATION <span style="color: #339933;">=</span> <span style="color: #0000ff;">'reg'</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">const</span> ERROR_LOGIN_USED <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 1 и 2 - стандартные ошибки</span><br />
<br />
<span style="color: #339933;">...</span><br />
<br />
<span style="color: #000088;">$form</span> <span style="color: #339933;">=</span> Form<span style="color: #339933;">::</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Primitive<span style="color: #339933;">::</span><span style="color: #004000;">string</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #004000;">setAllowedPattern</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^.{4,}$/is'</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Primitive<span style="color: #339933;">::</span><span style="color: #004000;">choice</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #004000;">setList</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$actionList</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// значение по умолчанию</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setValue<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">ACTION_REGISTRATION</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">import</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getGet</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">importMore</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPost</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #339933;">...</span><br />
<span style="color: #666666; font-style: italic;">// Здесь мы узнаем что такая учетка уже есть</span><br />
<span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">markCustom</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'login'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">ERROR_LOGIN_USED</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>И теперь в шаблоне зададим значения для 3х ошибок (можно еще и описания)</p>
<div class="codecolorer-container html4strict vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;?</span><br />
<span style="color: #009900;">$form-&gt;</span>addWrongLabel('login', 'Логин указан неверно');<br />
$form-&gt;addCustomLabel('login', BasePrimitive::MISSING, 'Логин не указан');<br />
$form-&gt;addCustomLabel('login', UserRegistration::ERROR_LOGIN_USED, 'Логин уже зарегистрирован');<br />
// Можно дополнительно задать описание для ошибки<br />
$form-&gt;addErrorDescription('login', UserRegistration::ERROR_LOGIN_USED, 'Выберите другой логин');<br />
// Выводить можно по старинке<br />
foreach($form-&gt;getTextualErrors() as $err) {<br />
&nbsp; &nbsp; ?&gt;<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;&lt;?<span style="color: #66cc66;">=</span>$err?&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;&lt;?</span><br />
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span></span><br />
<span style="color: #009900;"><span style="color: #66cc66;">//</span> А можно рядом с необходимым полем:</span><br />
<span style="color: #009900;">?&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;&lt;?<span style="color: #66cc66;">=</span>$form-&gt;</span>getTextualErrorFor('login')?&gt;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;description&quot;</span>&gt;&lt;?<span style="color: #66cc66;">=</span>$form-&gt;</span>getErrorDescriptionFor('login')?&gt;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">p</span></a>&gt;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://svdev.ru/blog/onphp-1-1-forms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
