<?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>WIDGET-INFO &#187; Controller</title>
	<atom:link href="http://blog.widget-info.net/category/cakephp/controller/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Sat, 24 Dec 2011 20:47:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/category/cakephp/controller/feed/" />
		<item>
		<title>CakePHP　テーブル情報の削除</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 23:21:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cache]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[その他クラス]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=318</guid>
		<description><![CDATA[CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。]]></description>
			<content:encoded><![CDATA[<p>CakePHPではデータベースのテーブル情報をキャッシュしてくれる機能があります。<br />
「app/config/core.php」内の設定で「Configure::write(&#8216;Cache.check&#8217;, true);」を<br />
適用していると生成されませんが、「app/tmp/cache/models」に<br />
データベースのテーブル情報がキャッシュとして保存されていきます。<br />
<span id="more-318"></span></p>
<p>これはテーブル情報をキャッシュすることで、フォームヘルパーなどでも利用される情報でもあり<br />
大変便利な機能ではあります。<br />
しかし気をつける点があり、「app/config/core.php」内の設定で「Configure::write(&#8216;debug&#8217;, 0);」の設定を<br />
1以上であれば、テーブルの情報を変更しても問題は無いのですが<br />
0を指定(デバック無し)にしてテーブル情報を変更すると、変更したテーブルのフィールド情報が取得されない現象が起こります。<br />
詳しい内容は割愛させていただきますが、まぁあたりまえな話でもあります。</p>
<p>しかし、ここで問題となるのが作成するアプリケーションの機能で、任意のタイミングにテーブル情報を変更するような<br />
動的テーブルが存在するアプリケーション設計に問題が発生するかと思います。<br />
その場合、キャッシュとして保存されたテーブル情報を一度削除をしなければ、変更された状態のテーブル情報を<br />
取得することができなくなり、「find()」などでも問題となってしまいます。</p>
<p>そこで削除する方法を探してみました。<br />
単純にCakePHPには定数の「CACHE」であるキャッシュディレクトリへのパスがあるので<br />
その定数を使って削除する方法がありますが、無駄なコーディングが増えるので<br />
CakePHPの内部を調べてテストしてみたところ発見！1行のコーディングで削除できます。</p>
<p>削除するためのコーディングはこちら</p>
<pre class="brush:php">Cache::delete('ファイル名','_cake_model_')</pre>
<p>ここで注意することは指定する「ファイル名」です。<br />
この名称の指定はキャッシュ機能が「File」エンジンを利用して、設定を変更していない場合は<br />
ファイル名のプレフィックスとして「cake_model_」が自動でつきます。<br />
「ファイル名」の指定は、例えばデータベースへの接続が「default」でテーブル名が「users」の場合は<br />
「ファイル名」を「default_users」となります。</p>
<p>これでテーブルが動的な設定でもCakePHPを問題なく利用できかと思います。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F10%2Fcakephp_cache_detabase_del%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/10/cakephp_cache_detabase_del/" />
	</item>
		<item>
		<title>CakePHP　Behaviorのsetup()注意点</title>
		<link>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/</link>
		<comments>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 03:59:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=299</guid>
		<description><![CDATA[CakePHPのビヘイビアでの注意点がひとつありましたのでメモとして。。。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのビヘイビアでの注意点がひとつありましたのでメモとして。。。</p>
<p>ビヘイビアの「setup()」を利用する際に注意点がありました。<br />
特に気づかずに第2引数を変数などにセットすると、コントローラー内に<br />
2つ以上モデルが存在し、両方に同じビヘイビアを設定した場合、<br />
その設定が上書きされてしまう恐れがあります。</p>
<p>といってもイマイチな説明ですが（汗<br />
<span id="more-299"></span><br />
CakePHPの1.1から利用して同じ使い方（同じコード）で利用していたということと<br />
その現象になる設計が無かったのが幸いして、発見に至りました（笑</p>
<p>通常は1つのコントローラーに1つのモデルとしてコーディングしていきますが、<br />
設計によっては1つのコントローラーが2つのモデルを利用する場合もあるかと思います。<br />
モデル1対コントローラー1の関係で利用するビヘイビアの設計であればいいのですが<br />
ビヘイビアはモデル多対コントローラー1の考えが基本かと思います。<br />
その例としてコントローラーでは以下の使い方があると思います。</p>
<pre class="brush:php">//コントローラー内のモデル設定で
$uses=array('モデル1','モデル2');</pre>
<p>この場合、それぞれのモデルに1つのビヘイビアをセットしたとし、<br />
「setup()」の第2引数にも何かしらの設定をセットしたとします。<br />
ビヘイビアでは以下のような処理とすると</p>
<pre class="brush:php">function setup(&amp;$model, $config = array()) {
	$this-&gt;config = $config;
}</pre>
<p>ここで問題発生。。。<br />
この場合「モデル1」のビヘイビアの処理を実行しているのに、通常はモデル1に設定されている<br />
ビヘイビアの第2引数が利用されるのに、実際はモデル2の第2引数を利用しようとします。</p>
<p>どうやらCakePHP1.2の途中からビヘイビアの読み込み方が、若干変更されていたみたいですorz</p>
<p>そこで内部を調べた結果の対応策として以下の方法で対処が可能ということが判明しました。</p>
<pre class="brush:php">function setup(&amp;$model, $config = array()) {
	$this-&gt;config[$model-&gt;alias] = $config;
}</pre>
<p>こうするこで、問題なく実行しているモデルの第2引数を参照するようにすることが可能です。<br />
まぁ単純にモデル名で配列化しているというだけにはなります（笑
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F10%2Fcakephp_behavior_setup%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/10/cakephp_behavior_setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/10/cakephp_behavior_setup/" />
	</item>
		<item>
		<title>CakePHP　ViewでControllerを利用する方法</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_use_controller_in_view/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_use_controller_in_view/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 20:49:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=228</guid>
		<description><![CDATA[CakePHPを利用しているとViewでControllerのメソッドを利用したい場合がでてくることもあると思います。]]></description>
			<content:encoded><![CDATA[<p>CakePHPを利用しているとViewでControllerのメソッドを<br />
利用したい場合がでてくることもあると思います。</p>
<p>MVCの概念からすると利用できないと思われがちですが、一応できます（笑<br />
簡単な事に、Controllerで単純に「$this-&gt;set()」をするだけでView側で<br />
Controllerメソッドを使うことができるようになります。</p>
<p><span id="more-228"></span></p>
<p>基本的な利用例として次のようになります。</p>
<pre class="brush:php">$this-&gt;set('変数名',$this);</pre>
<p>これで変数内にはControllerのクラスが格納されていることになりますので<br />
View側でControllerメソッドを自由に利用できるようになります。</p>
<p>とはいいつつも、このような利用をする場合は稀だと思いますが。。。（汗
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_use_controller_in_view%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_use_controller_in_view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_use_controller_in_view/" />
	</item>
		<item>
		<title>CakePHP　コンポーネント内でコンポーネントの利用</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_in_component/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_in_component/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:30:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Controller]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=209</guid>
		<description><![CDATA[CakePHPの基本を少し。。。自作のコンポーネントを作成した場合、CakePHPにすでにあるコンポーネントまたは他の自作のコンポーネントを再利用する場合]]></description>
			<content:encoded><![CDATA[<p>CakePHPの基本を少し。。。</p>
<p>自作のコンポーネントを作成した場合、CakePHPにすでにあるコンポーネント<br />
または他の自作のコンポーネントを再利用する場合にはどうするのか。<br />
基本ではあるものの、再利用してこそフレームワークが活きるものかと思いメモ程度に（笑<br />
<span id="more-209"></span><br />
自作コンポーネント内で他のコンポーネントの再利用の場合、例えばCakePHPの<br />
「Session」コンポーネントを利用するとしたい場合は次のようになります。</p>
<pre class="brush:php">
var $components = array('Session');
</pre>
<p>こう記述することで、CakePHPの「Session」コンポーネントを<br />
自作のコンポーネントで利用することができます。<br />
CakePHPのコンポーネントを再利用することで、無駄なコーディングを減らし、<br />
無駄なバグを減らすこともできます。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_in_component%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_in_component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_in_component/" />
	</item>
		<item>
		<title>CakePHP　paginateの基本</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_paginate/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_paginate/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:02:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Helpers]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[paginate]]></category>
		<category><![CDATA[データベース]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=196</guid>
		<description><![CDATA[CakePHPでは「paginate」（ページング機能）が最初から搭載されています。1.1系では別に用意する必要があったページングが、1.2系では最初から搭載されているのでわざわざコーディングすることなく利用できる]]></description>
			<content:encoded><![CDATA[<p>CakePHPでは「paginate」（ページング機能）が最初から搭載されています。<br />
1.1系では別に用意する必要があったページングが、1.2系では最初から搭載されているので<br />
わざわざコーディングすることなく利用できるのは開発の効率がよくなるものです（笑</p>
<p>さてこの「paginate」（ページング機能）を少し解説していこうかと思います。<br />
といっても自分のメモ的なものもありますが。。。<br />
<span id="more-196"></span><br />
「paginate」（ページング機能）を利用する前に、CakePHPでまず必要な用意はありません（笑<br />
前述したとおり1.2系では最初から利用できるので特別な用意をする必要がありません。<br />
なぜ用意が必要がないかと言うと、必要なものはCakePHP側で先に用意してくれているからです。<br />
例えば、「paginate」（ページング機能）を使うには通常はヘルパーの「Paginator」、ajax化を利用するなら<br />
「ajax」ヘルパーが必要になりますが、CakePHPが各ヘルパーが無いと判断したら、自動で利用できるようになっています。<br />
これは楽です（笑<br />
ではデータベースから取得するにはコントローラーでどう記述するかとなると、<br />
まずは基本は次のようになります。</p>
<pre class="brush:php">$this-&gt;paginate();</pre>
<p>すごく簡単な説明でした（笑<br />
では条件を指定する場合、</p>
<pre class="brush:php">$this-&gt;paginate($conditions);</pre>
<p>またまた簡単です（笑<br />
ここで躓きそうな悩み。。。<br />
モデルを指定していないのに、なぜデータが取得できるか。<br />
それは「paginate」が自動でモデルを内部で処理をし、データベースからデータを取得する<br />
モデルを自動で設定してくれています。<br />
ここでさらに疑問となるのが「Aコントローラー」の「Aモデル」の「paginate」ではなく<br />
「Aコントローラー」から「Bモデル」の「paginate」のデータを取得する場合はどうするのか。</p>
<p>さすがにCakePHPは自動とはいきません（笑<br />
そこで取得するデータのモデルを指定する場合は次のようになります。</p>
<pre class="brush:php">$this-&gt;paginate('取得するモデル名');</pre>
<p>ここで「？」と思う方、はい先ほどの説明でモデルを指定する第1引数には<br />
条件指定を入れている場所でした。<br />
実はCakePHPでは第1引数が文字列の場合は、それをモデル名として処理します。<br />
では条件はどこに記述するのかですが、この場合は第2引数が条件指定の渡しとなります。</p>
<pre class="brush:php">$this-&gt;paginate('取得するモデル名',$conditions);</pre>
<p>これでモデルを指定したり、条件を指定したり自由に「paginate」（ページング機能）を使いこなせると思います。<br />
ちなみに「$conditions」の指定方法は「find」と同じです。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_paginate%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_paginate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_paginate/" />
	</item>
		<item>
		<title>CakePHP　モデルのインポート方法</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_model_import/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_model_import/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:05:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[import]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=175</guid>
		<description><![CDATA[CakePHPのモデルでアソシエーションしていないモデル、またはアソシエーションが無い他のモデルを使うこともあるかと思います。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのモデルでアソシエーションしていないモデル、<br />
またはアソシエーションが無い他のモデルを使うこともあるかと思います。</p>
<p>アソシエーションをしていれば問題なく使えますが、アソシエーションをしていないモデルや<br />
アソシエーションが無いモデルは、別の方法でモデルを読み込みます。<br />
例えば最初から利用するのであれば、コントローラー内の</p>
<pre class="brush:php">var $uses=array();</pre>
<p>に記述しますが、特定の段階でとなるとこれでは対応できません。<br />
その場合は特定の段階で<br />
<span id="more-175"></span></p>
<pre class="brush:php">App::import('Model','モデル名');</pre>
<p>と記述後</p>
<pre class="brush:php">$this-&gt;モデル名=new モデル名();</pre>
<p>となります。これで使いたいタイミングでモデルを読み込み、そのモデルを<br />
有効に利用することができます。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_model_import%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_model_import/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_model_import/" />
	</item>
		<item>
		<title>CakePHP　プラグイン（plugin）について[2]</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_plugin_mode/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_plugin_mode/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 15:05:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=130</guid>
		<description><![CDATA[CakePHPのプラグイン（plugin）について第2弾はプラグイン（plugin）の注意点について。]]></description>
			<content:encoded><![CDATA[<p>CakePHPのプラグイン（plugin）について第2弾</p>
<p>プラグイン（plugin）の基本ができたら次のステップです。<br />
ステップというより注意点かもしれません（汗<br />
プラグイン（plugin）は開発には大変便利な機能で、一度作成したアプリケーションを<br />
再利用可能であれば開発すればするほど後々楽になります。<br />
実際プラグイン（plugin）はよく使います。<br />
しかし、プラグイン化（plugin）した際に注意点があります。<br />
それはモデルのアソシエーション部分です。<br />
通常のアソシエーション記述とは異なるのです。<br />
<span id="more-130"></span></p>
<p>例えば「product」というモデルと「category」モデルがアソシエーションしているとします。<br />
その場合</p>
<pre class="brush:php">var $belongsTo = array(
'Category' =&gt; array(
'className' =&gt; 'Category',
'foreignKey' =&gt; 'category_id'
)
); </pre>
<p>が基本の記述ですが、プラグイン化（plugin）の場合</p>
<pre class="brush:php">
//プラグイン名を「plugin1」とします
var $belongsTo = array(
'Category' =&gt; array(
'className' =&gt; 'Plugin1.Category',
'foreignKey' =&gt; 'category_id'
)
); </pre>
<p>がプラグイン化（plugin）での記述になります。</p>
<p>しかしCakePHPは上記の記述をしなくても動く場合があります。<br />
なぜ説明したんだと言われそうですが。。。</p>
<p>それはプラグイン（plugin）側の「category」に独自のメソッドがある場合、<br />
上記のように記述していないと、そのメソッドを呼び出すことができません。<br />
これは「app」側にある「category」モデルを参照しているためにおきる現象です。</p>
<p>この注意点を考慮してプラグイン（plugin）を開発してみてください。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_plugin_mode%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_plugin_mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_plugin_mode/" />
	</item>
		<item>
		<title>CakePHP　プラグイン（plugin）について[1]</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_plugin_base/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_plugin_base/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 04:39:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=128</guid>
		<description><![CDATA[CakePHPのプラグイン（plugin）について、まずは基本を]]></description>
			<content:encoded><![CDATA[<p>CakePHPのプラグイン（plugin）について少し解説していきます。<br />
というのもプラグイン（plugin）の全貌を説明すると、かなり長い説明になりますので小分けで解説（笑<br />
まずは基本から。。。<br />
CakePHPでのプラグイン（plugin）は1つのアプリケーション内（「app」）に<br />
再利用できるアプリケーションを構築できることが可能です。<br />
<span id="more-128"></span><br />
「？」と思った方すみません（汗<br />
例えば1つのアプリケーション「商品一覧」を作成したとします。<br />
このアプリケーションは商品の登録管理機能と登録した商品を一覧で表示するアプリケーションだとします。<br />
さて、このアプリケーションと同じものを同じ「app」内に作るの場合（仕様は同じとして）<br />
わざわざデータベースを再度作成して、同じコーディングをして。。。<br />
これが例えば10個用意しなければならないとしたら、えらい時間がかかってしまいます。</p>
<p>そこで活躍するプラグイン（plugin）。<br />
簡単に言えば作成したアプリケーションを複製して、プラグイン（plugin）用のディレクトリに<br />
配置するだけでコーディングは完了です。<br />
配置する場所は通常のアプリケーション「app」以下を<br />
「app/plugins」にコピーするだけです。</p>
<p>例えば「app/plugins/controllers」を「app/plugins/プラグイン名/controllers」へ<br />
「app/plugins/models」を「app/plugins/プラグイン名/models」へ<br />
「app/plugins/views」を「app/plugins/プラグイン名/views」へ<br />
これだけでプラグイン（plugin）の基本は完了です。</p>
<p>アクセスするには次のようになります。<br />
「http://ドメイン名/プラグイン名/コントローラー名/アクション名」</p>
<p>まずはここまでの解説です。<br />
汎用性のあるあるアプリケーションを作成すると、コーディングに使う時間と<br />
開発時間を大幅に削減できる可能性がありますよ。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_plugin_base%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_plugin_base/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_plugin_base/" />
	</item>
		<item>
		<title>CakePHP　setSource()の注意点</title>
		<link>http://blog.widget-info.net/2009/09/cakephp_setsource_info/</link>
		<comments>http://blog.widget-info.net/2009/09/cakephp_setsource_info/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 13:10:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=110</guid>
		<description><![CDATA[モデルが参照するデータベースのテーブルを途中で変更するということで「setSource()」を以前に説明しました]]></description>
			<content:encoded><![CDATA[<p>モデルが参照するデータベースのテーブルを途中で変更する<br />
ということで「setSource()」を以前に説明しましたが、注意点を発見。。。</p>
<p>自分のメモとして記録します（汗<br />
<span id="more-110"></span>恐らくデータベースの設計が複雑だったり、負荷分散的（？）につかわないかぎり<br />
あまり利用されない方法かとは思いますが。。。</p>
<p>さて注意点ですが、コントローラーの途中で「setSource()」を使うことで<br />
参照テーブルを変更できますが、コントローラーの途中で新たなテーブルを作成して<br />
そのテーブルを「setSource()」でセットするとどうなるでしょうか。。。</p>
<p>はい、実はテーブルがありませんとエラーが出ます。<br />
これはCakePHPが接続しているデータベースのテーブル情報を<br />
キャッシュし、そのキャッシュ内に変更するテーブルがあれば変更できるような仕様でした（泣</p>
<p>まぁあたり前といえば当たり前。</p>
<p>そこで下記のようにすることで回避ができたのでご参考に（笑</p>
<pre class="brush:php">$db = ConnectionManager::getDataSource($this-&gt;useDbConfig);
$dbconf = new DATABASE_CONFIG();
$dbbArray = array(
'database'=&gt;$dbconf-&gt;{$this-&gt;useDbConfig}['database'],
'host'=&gt;$dbconf-&gt;{$this-&gt;useDbConfig}['host']
);
$db-&gt;reconnect($dbbArray);
$this-&gt;setSource('テーブル名');</pre>
<p>この例は再度データベースを指定して、キャッシュを取得しなおしています。<br />
こうすることで問題は解決です。</p>
<p>時間足らずなので、とりあえずこれで対応ですが<br />
キャッシュを再取得があるような。。。<br />
まぁ調べてみます（汗
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F09%2Fcakephp_setsource_info%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/09/cakephp_setsource_info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/09/cakephp_setsource_info/" />
	</item>
		<item>
		<title>CakePHP　データベースのテーブル名を途中で変更</title>
		<link>http://blog.widget-info.net/2009/08/cakephp-usetable_change/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp-usetable_change/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 15:04:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Model]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=85</guid>
		<description><![CDATA[CakePHPのデータベースのテーブル名を途中で変更]]></description>
			<content:encoded><![CDATA[<p>CakePHPではデータベースの接続先テーブルを変更できますが<br />
実行中に変更したくなる場合があると思います。</p>
<p>コントローラーの実行途中で接続先のテーブルを変更する、<br />
そんな開発なのでメモとして（笑）</p>
<p><span id="more-85"></span>接続先のテーブルを変更する可能性はいろいろなパターンがあります。<br />
例えば、ログインユーザーごとのテーブルが存在する場合や<br />
CakePHPの「plugin」機能を利用をした場合など、仕様によってさまざまです。<br />
※「plugin」については、いつか説明ができればと（汗）</p>
<p>さて本題ですが接続先のテーブルを変更する場合は次のように記述します。</p>
<pre class="brush:php">$this-&gt;モデル名-&gt;setSource('接続先テーブル名');</pre>
<p>記述はコントローラー内で行いますので注意してください。</p>
<p>これで任意のタイミングでテーブルの接続を動的に変更できます。<br />
ここまで考えられているCakePHPは便利だなと、つい思ってしまいます（笑）
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp-usetable_change%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp-usetable_change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp-usetable_change/" />
	</item>
	</channel>
</rss>

