<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ECWorks Blog &#187; Model</title>
	<atom:link href="http://blog.ecworks.jp/archives/tag/model/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ecworks.jp</link>
	<description>CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。</description>
	<lastBuildDate>Fri, 09 Dec 2011 07:24:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/tag/model/feed" />
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: 122492164489250, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/ja_JP/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>【CakePHP】validates()とinvalidate()の記述順</title>
		<link>http://blog.ecworks.jp/archives/792</link>
		<comments>http://blog.ecworks.jp/archives/792#comments</comments>
		<pubDate>Sat, 18 Jul 2009 02:22:46 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[バリデーション]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=792</guid>
		<description><![CDATA[バリデーションに関するTipsその２です。
これも意外に情報が書かれていないのですが、Model::validates()とModel::invalidate()の組み合わせ利用では順番があるようで、気をつけないと正しいバリデーション処理が行えないようです。]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.ecworks.jp%252Farchives%252F792%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%80%90CakePHP%E3%80%91validates%28%29%E3%81%A8invalidate%28%29%E3%81%AE%E8%A8%98%E8%BF%B0%E9%A0%86%22%20%7D);"></div>
<p><img class="alignleft" style="margin: 5px;" title="cake-logo" src="../wp-content/uploads/2009/02/cake-logo.jpg" alt="cake-logo" width="180" height="180" />バリデーションに関するTipsその２です。</p>
<p>これも意外に情報が書かれていないのですが、Model::validates()とModel::invalidate()の組み合わせ利用では順番があるようで、気をつけないと正しいバリデーション処理が行えないようです。</p>
<p>validates()は「モデルに記述したバリデーションルールを実行する」メソッドで、save()等でも自動的に実行されますが直接呼ぶことで明示的に、事前に処理することが出来ます。<br />
また、invalidate()は、独自に値チェックなどを行った結果で、エラーメッセージを出したい場合に用いるメソッドで、フォーム内のインプットの各アイテムに手動でメッセージを出したい場合に使います。</p>
<p>これらを組み合わせる場合、まずvalidates()が先に実行されている必要があるようです。逆にinvalidate()がvalidates()より先に実行された場合、invalidate()で表示させようとしたエラーメッセージが表示されません。</p>
<pre class="brush: php; ">

class FooController extends AppController {

var $name = &quot;Foo&quot;;
var $uses = array(&#039;Foo&#039;);

//OKな例
function bar(){
$this-&gt;Foo-&gt;set($this-&gt;data);
$this-&gt;Foo-&gt;validates();
$this-&gt;Foo-&gt;invalidate(&#039;fields&#039;, &#039;Good Cake&#039;);
}

//NGな例
function hoge(){
$this-&gt;Foo-&gt;set($this-&gt;data);
$this-&gt;Foo-&gt;invalidate(&#039;fields&#039;, &#039;Bad Cake&#039;);
$this-&gt;Foo-&gt;validates();
}

}
</pre>
<p>バリデーションが上手く機能しない場合はこれが理由である場合もありますので、心当たりがありましたらチェックしてみてください。</p>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.ecworks.jp/archives/792' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/792/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/792" />
	</item>
	</channel>
</rss>

