<?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>Getting OUT &#187; CakePHP</title>
	<atom:link href="http://mori.moripower.jp/category/eqwip/cakephp/feed" rel="self" type="application/rss+xml" />
	<link>http://mori.moripower.jp</link>
	<description>Go for it! President LongBoarder!</description>
	<lastBuildDate>Tue, 17 Aug 2010 15:43:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/category/eqwip/cakephp/feed" />
		<item>
		<title>JQueryのUploadifyをCakePHPで使用する。その後・・・</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/672.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/672.html#comments</comments>
		<pubDate>Tue, 06 Apr 2010 09:47:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=672</guid>
		<description><![CDATA[以前、書きかけの「AjaxアップローダーのUploadifyをCakePHPで使う方法」の続編です。
まずは、おさらいで、「基本的な流れ」の確認
(5)は削除です・・・。

JQuery、Uploadifyのスクリプトを [...]]]></description>
			<content:encoded><![CDATA[<p>以前、書きかけの「AjaxアップローダーのUploadifyをCakePHPで使う方法」の続編です。</p>
<p>まずは、おさらいで、「基本的な流れ」の確認<br />
(5)は削除です・・・。</p>
<ol>
<li>JQuery、Uploadifyのスクリプトをヘッダー内で定義する。</li>
<li>UploadfyのCSSをヘッダー内で定義す る。</li>
<li>ビュー（～.ctp）に、Javascritおよび必要なタグを記載する。</li>
<li>Javascriptから呼ぶ、 アップロード処理をするphpプログラムを用意する。</li>
<li><del datetime="2010-04-06T10:38:58+00:00">アップロード完了後のスクリプトを用意する。</del></li>
<li>CakePHP のFromタグによるSubmitのPHPプログラムを用意する。</li>
</ol>
<p><span id="more-672"></span><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
(1) JQuery、Uploadifyのスクリプトをヘッダー内で定義する。<br />
(2) UploadfyのCSSをヘッダー内で定義す る。</p>
<p>・Uploadifyを使うときの専用layoutを用意しても良いでしょう。</p>
<div style="border:1px solid #999; background-color:#ddd;font-size:12px;padding:5px;margin:5px;">&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Strict//EN&#8221; &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=UTF-8&#8243;&gt;<br />
&lt;title&gt;&lt;? echo $title_for_layout; ?&gt;&lt;/title&gt;</p>
<p>&lt;!&#8211;JAVASCRIPT&#8211;&gt;<br />
&lt;script src=&#8221;&lt;?= $html-&gt;url(&#8217;/js/jquery-1.3.2.min.js&#8217;)?&gt;&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script src=&#8221;&lt;?= $html-&gt;url(&#8217;/js/jquery.uploadify.js&#8217;)?&gt;&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;!&#8211;CSS&#8211;&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;&lt;?= $html-&gt;url(&#8217;/css/uploadify.css&#8217;)?&gt;&#8221; type=&#8221;text/css&#8221; media=&#8221;screen&#8221;/&gt;</p></div>
<p>(3) ビュー（～.ctp）に、Javascritおよび必要なタグを記載する。</p>
<p>・Viewでは、controllerからデータを受けて、JavaScriptで参照することもできる。</p>
<div style="border:1px solid #999; background-color:#ddd;font-size:12px;padding:5px;margin:5px;">&lt;?php<br />
$maxSize = $this-&gt;data['max_size'];<br />
$maxAttachment = $this-&gt;data['Management']['max_attachment'];<br />
?&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243;&gt; // &lt;![CDATA[</p>
<p>$(document).ready(function(){<br />
var maxsize = &lt;?= $maxSize?&gt;;<br />
var maxattachment = &lt;?= $maxAttachment?&gt;;</p>
<p>$('#uploadify').uploadify({<br />
'uploader': path + '/uploadify.swf',<br />
//'script': path +  '/uploadify.php',　<span style="color: #ff0000;"> // Uploadify付属のサーバー側PHPを使わない。</span><br />
'script': '/file_uploads/complete/' ,　<span style="color: #ff0000;">//</span><span style="color: #ff0000;"><span style="color: #ff0000;"> </span>controllerで関数を作成する。この内容は、次の(4)</span><br />
'folder': '/store/' + sdir,<br />
'cancelImg': path + '/cancel.png',<br />
'fileExt': "*.*",<br />
'fileDesc': "data",<br />
'multi': true,<br />
'queueID': 'fileQueue',<br />
'queueSizeLimit' : maxattachment,<br />
'sizeLimit': maxsize * 1024,<br />
・・・・</p>
<p>function kick(){<br />
if(window.confirm('この内容でよろしいですか。')) {<br />
$('#uploadify').uploadifyUpload();<br />
}<br />
}</p></div>
<p>・HTMLタグのFormおよび、送信あたりは、下記のようにする。</p>
<div style="border:1px solid #999; background-color:#ddd;font-size:12px;padding:5px;margin:5px;">&lt;?php echo $form-&gt;create('FileUpload', array(type'=&gt;'post', 'action'=&gt;'check')); ?&gt;<br />
・・・・<br />
&lt;div&gt;&lt;?php echo $form-&gt;button('　送信　', array('onClick'=&gt;"javascript:kick()", 'style'=&gt;'cursor:pointer;')); ?&gt;&lt;/div&gt;</div>
<p>(4) Javascriptから呼ぶ、 アップロード処理をするphpプログラムを用意する。</p>
<p>・Uploadifyに添付されていたＰＨＰコードをまねつつ、controllerにCakePHPコードを書く。<br />
・これで、$thisとか使える。モデルにもアクセスできるハズ。</p>
<div style="border:1px solid #999; background-color:#ddd;font-size:12px;padding:5px;margin:5px;">function complete($subDir = null, $sender_id = null) {</p>
<p>//レイアウトは使用しない。<br />
$this-&gt;layout = null;<br />
$this-&gt;autoLayout = false;</p>
<p>//先に、echo() で返す。これがないと、Ajaxが戻りを受け取れず固まる？<br />
echo "1";</p>
<p>//アップロード情報がないなら終了<br />
if (empty($_FILES)) {<br />
exit();<br />
}</p>
<p>/*--------------------------------------------------------------*/<br />
// アップロードしたファイルの生成。                                */<br />
/*--------------------------------------------------------------*/<br />
$rtnArray = $this-&gt;_tmpdir($subDir);　<span style="color: #ff0000;">// これは、自作関数・・・、app_controllerで定義してます。</span></p>
<p>$targetPath = $rtnArray['tmp'];<br />
$targetPath =  str_replace(&#8217;//&#8217;,'/&#8217;,$targetPath);</p>
<p>$targetFile =  $targetPath . $_FILES['Filedata']['name'];<br />
$tempFile = $_FILES['Filedata']['tmp_name'];</p>
<p>switch ($_FILES['Filedata']['error']) {<br />
case 0:<br />
$msg = &#8220;Success.&#8221;; // comment this out if you don&#8217;t want a message to appear on success.<br />
break;<br />
case 1:<br />
$msg = &#8220;The file(&#8221; . $_FILES['Filedata']['name'] . &#8220;) is bigger than this PHP installation allows&#8221;;<br />
break;<br />
case 2:<br />
$msg = &#8220;The file(&#8221; . $_FILES['Filedata']['name'] . &#8220;) is bigger than this form allows&#8221;;<br />
break;<br />
case 3:<br />
$msg = &#8220;Only part of The file(&#8221; . $_FILES['Filedata']['name'] . &#8220;) was uploaded&#8221;;<br />
break;<br />
case 4:<br />
$msg = &#8220;No file(&#8221; . $_FILES['Filedata']['name'] . &#8220;) was uploaded&#8221;;<br />
break;<br />
case 6:<br />
$msg = &#8220;Missing a temporary folder&#8221;;<br />
break;<br />
case 7:<br />
$msg = &#8220;Failed to write file(&#8221; . $_FILES['Filedata']['name'] . &#8220;) to disk&#8221;;<br />
break;<br />
case 8:<br />
$msg = &#8220;File upload stopped by extension&#8221;;<br />
break;<br />
default:<br />
$msg = &#8220;unknown error &#8221; . $_FILES['Filedata']['error'];<br />
break;</p>
<p>}<br />
if ($_FILES['Filedata']['error'] &gt; 0) {<br />
exit();<br />
}</p>
<p>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;*/<br />
// アップロードしたファイルから生成。                                */<br />
/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;*/<br />
move_uploaded_file($tempFile, $targetFile);<br />
exit();<br />
}</p></div>
<p><del datetime="2010-04-06T10:38:58+00:00">(5) アップロード完了後のスクリプトを用意する。</del></p>
<p>(6) CakePHP のFromタグによるSubmitのPHPプログラムを用意する。</p>
<ul>
<li>$form-&gt;create(&#8217;FileUpload&#8217;, array(type&#8217;=&gt;&#8217;post&#8217;,  &#8216;action&#8217;=&gt;&#8217;check&#8217;)　のcontroller関数。</li>
<li>既に、(4)のcompleteは、終わっている。</li>
<li>フォームのその他、入力項目をデータベースに登録したりする。</li>
<li>アップロードのキャンセルをする場合は、既にアップロードされているサーバーのファイルを消す作業となる。</li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/672.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/672.html" />
	</item>
		<item>
		<title>QdmailのFrom、Return-path</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/604.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/604.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 04:06:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=604</guid>
		<description><![CDATA[CakePHPにて、メール送信コンポーネント「Qdmail」を使わせて頂きました。
メールには、封筒に書く住所等の「エンベロープ」と便箋に書く「ヘッダー」があります。差出人も$Qdmail->from、$param['f [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPにて、メール送信コンポーネント「<a href="http://hal456.net/qdmail/" target="_blank">Qdmail</a>」を使わせて頂きました。</p>
<p>メールには、封筒に書く住所等の「エンベロープ」と便箋に書く「ヘッダー」があります。差出人も$Qdmail->from、$param['from']の２つがあり、下記のように設定されるので、思ったとおり動作するよう実際のメアドを設定する必要があります。<br />
<a href="http://mori.moripower.jp/wp-content/uploads/2010/03/m20100310-1.gif" rel="lightbox[604]"><img src="http://mori.moripower.jp/wp-content/uploads/2010/03/m20100310-1-300x290.gif" alt="m20100310-1" title="m20100310-1" width="300" height="290" class="size-medium wp-image-605" /></a><br />
・Return-pathは、メール送信時にエラーが発生した場合に、通知されるメアド。Return-pathは、メール転送中にMTAにより、エンベロープのFromで置き換えられる。<br />
・Reply-toは、メール受信者が返信をしたときに、表示されるメアド。</p>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/604.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/604.html" />
	</item>
		<item>
		<title>CakePHP ページャ pagenate</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/507.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/507.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:17:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=507</guid>
		<description><![CDATA[CakePHPねたです。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212 [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPねたです。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
CakePHPのページング機能は、1.2から標準で入っているようで、特にコンポーネントを取り込む必要はないようです。これで、通常コントローラで使う分には問題ないです。</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#ddeeee; font-size:11px;">//基本的なページングの条件
$this-&gt;paginate = array(
		'limit' =&gt; 25,
        	'order' =&gt; array('User.created' =&gt; 'desc'),
		'recursive' =&gt; 1,
  		);

// Userモデルの検索条件を設定する。$hogeは、事前に何か設定されていると仮定する。
$conditions = "User.name LIKE '%{$hoge}%'";

// $this-&gt;pageneteで、find検索とほぼ同じ。（ただし、設定された整列、条件で検索）
$this-&gt;data = $this-&gt;paginate('User', $conditions);</pre>
<p>で、ビューに下記のコードを書くと・・。</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#ddeeee; font-size:11px;">&lt;?php echo $paginator-&gt;prev('« Previous ', null, null, array('class' =&gt; 'disabled')); ?&gt;
&lt;?php echo $paginator-&gt;numbers(); ?&gt;
&lt;?php echo $paginator-&gt;next(' Next »', null, null, array('class' =&gt; 'disabled')); ?&gt;</pre>
<p>こんな感じで表示されます。（それぞれ、リンクが張られます。）</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#eeddee; font-size:11px;">« Previous
1 | 2 | 3
Next »</pre>
<p>で、２ページ目をクリックしたとき、URLは、こんな感じで飛んでいきます。<br />
http://~~~.~~~~~.jp/users/view/page:2</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p style="font-size:14px; color:red;">しかし、絞込み条件を、Viewから得て$hogeに設定している場合は、問題が出てきます。</p>
<p>こんなふうに、条件をビューから得ると、２ページ目は絞込みがされないで、全件表示されます。prevも、nextも同じ症状となります。</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#ddeeee; font-size:11px;">$hoge = $this-&gt;data['search'];</pre>
<p>何故かというと、ページャの【1 | 2 | 3】や【prev】、【next】は、単なるリンク(a href)でしかないからです。おそらくビューでは、$this-&gt;data['search'];をするために、form-&gt;createして、inputでコントローラに持ってきてますよね。そんで、送信とかボタン押すでしょ。</p>
<p>ページャで自動的に作られる【1 | 2 | 3】や【prev】、【next】は、単なるリンクなので、これをクリックしても、コントローラーでは、$this-&gt;dataは空です。（が～ん）</p>
<p>リンクにこんな感じで、&#8217;users/view/&#8217;. $condition 引数を設定しようとしても、ページャが自動的にリンク作るので、そんなことは、出来ません。（が～ん、が～ん）。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
多分、ページャは、絞込み条件で与えられた件数を検索し、limitで割って計算して、page:2とかでその部分を持ってきているだけです。</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#eeddee; font-size:11px;">|------------------------|------------------------|------------------------|
|         1ページ目      |       2ページ目        |       3ページ目        |
|------------------------|------------------------|------------------------|</pre>
<p>ですので、ページングするたびに、同じ絞込み条件を与えないと、見た目、変なページングになってしまします。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
<span style="font-size:14px; color:red;">解決策は、条件をどこに保存しておくか？</span>です。<br />
◆解決案１：　データベースに保存しておく。</p>
<p style="margin:0 0 5px 10px">でも、複数の人が同時にブラウザ操作してたら・・・、工夫が必要ですよね。</p>
<p>◆解決案２：　セッションに保存しておく。</p>
<p style="margin:0 0 5px 10px">これが、一番、現実的な解決方法だと思われます。</p>
<p>下記の２つをうまく組み合わせて、絞込み条件を保存し、ページングするたびに読み出せば、うまくいくはずです。</p>
<pre style="margin:5px 10px 0 10px; padding:5px; background-color:#ddeeee; font-size:11px;">//セッションデータを読み出す。
if ($this-&gt;Session-&gt;check('pagecond')) {
    $this-&gt;data = $this-&gt;Session-&gt;read('pagecond');
}
//セッションデータを書き出す。
$this-&gt;Session-&gt;write('pagecond', $this-&gt;data);</pre>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/507.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/507.html" />
	</item>
		<item>
		<title>JQueryのUploadifyをCakePHPで使用する</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/435.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/435.html#comments</comments>
		<pubDate>Thu, 10 Sep 2009 10:11:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=435</guid>
		<description><![CDATA[AjaxアップローダーのUploadifyをCakePHPで使う方法について、ご紹介します。
基本的な流れ

JQuery、Uploadifyのスクリプトをヘッダー内で定義する。
UploadfyのCSSをヘッダー内で定 [...]]]></description>
			<content:encoded><![CDATA[<p>AjaxアップローダーのUploadifyをCakePHPで使う方法について、ご紹介します。</p>
<p>基本的な流れ</p>
<ol>
<li>JQuery、Uploadifyのスクリプトをヘッダー内で定義する。</li>
<li>UploadfyのCSSをヘッダー内で定義する。</li>
<li>ビュー（～.ctp）に、Javascritおよび必要なタグを記載する。</li>
<li>Javascriptから呼ぶ、アップロード処理をするphpプログラムを用意する。</li>
<li>アップロード完了後のスクリプトを用意する。</li>
<li>CakePHPのFromタグによるSubmitのPHPプログラムを用意する。</li>
</ol>
<p>それでは、具体的に説明します。</p>
<p>※この記事は、書くのを中断しています。後日、ＵＰ！</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/435.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/435.html" />
	</item>
		<item>
		<title>CakePHPコンポーネントからモデルにアクセスする</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/432.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/432.html#comments</comments>
		<pubDate>Fri, 28 Aug 2009 03:51:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=432</guid>
		<description><![CDATA[コンポーネントのメソッドの中で、下記のように記載する。

function hoge() {
     // モデル生成
     $pepole = ClassRegistry::init('Pepole');
    [...]]]></description>
			<content:encoded><![CDATA[<p>コンポーネントのメソッドの中で、下記のように記載する。</p>
<pre style="margin-left:20px; color:blue; font-size:12px;">
function hoge() {
     // モデル生成
     $pepole = ClassRegistry::init('Pepole');
     $data = $peple->find('first');
     ・
     ・
     ・
}
</pre>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/432.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/432.html" />
	</item>
		<item>
		<title>webrootディレクトリ</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/426.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/426.html#comments</comments>
		<pubDate>Wed, 26 Aug 2009 06:19:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=426</guid>
		<description><![CDATA[webrootをCakePHPのシステムと分けて、通常のWWW_ROOTにおく場合、注意点

app
---app1
------view
---------uploads

WWW_ROOT
---app1
----- [...]]]></description>
			<content:encoded><![CDATA[<p>webrootをCakePHPのシステムと分けて、通常のWWW_ROOTにおく場合、注意点</p>
<pre style="margin-left:20px; color:blue; font-size:12px;">
app
---app1
------view
---------uploads

WWW_ROOT
---app1
------uploads   700
</pre>
<p>・WWW_ROOTのuploadsを700とすると、VIEWのuploadsにもアクセスできなくなります。（当然か・・・）</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/426.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/426.html" />
	</item>
		<item>
		<title>さくらインターネットCakePHPでbake</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/408.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/408.html#comments</comments>
		<pubDate>Thu, 20 Aug 2009 15:53:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=408</guid>
		<description><![CDATA[(1) さくらインターネットに、TELNETでログイン
(2) cakeコマンドを修正
%vi ~/○○○○○/cake/console/cake     ]]></description>
			<content:encoded><![CDATA[<p><strong>(1) さくらインターネットに、TELNETでログイン</strong></p>
<p><strong>(2) cakeコマンドを修正</strong></p>
<pre style="margin-left:20px; color:blue; font-size:12px; width:400px">%vi ~/○○○○○/cake/console/cake     <--  ○○○○○は、CakePHPを入れたフォルダ
#!/usr/local/bin/bash
</pre>
<p><strong>(3) cakeコマンド実行</strong></p>
<pre style="margin-left:20px; color:blue; font-size:12px; width:400px">%cd ~/○○○○○
% ./cake/console/cake

Current Paths:
-app: app
-working: /home/×××××/○○○○○/app
-root: /home/×××××/○○○○○
-core: /home/×××××/○○○○○

Changing Paths:
your working path should be the same as your application path
to change your path use the '-app' param.
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp

Available Shells:

APP/vendors/shells:
- none

ROOT/vendors/shells:
- none

CORE/console/libs:
acl
api
bake
console
i18n
schema
testsuite

To run a command, type 'cake shell_name [args]'
To get help on a specific command, type 'cake shell_name help'
%</pre>
<p><strong>(4) 簡単にcakeコマンドが打てるようにPathを通す。</strong></p>
<pre style="margin-left:20px; color:blue; font-size:12px; width:400px">% vi .cshrc
$HOME/○○○○○/cake/console      <--  Pathに追加、○○○○○は、CakePHPを入れたフォルダ
</pre>
<p>※さくらの場合、下記をチェックする。<br />
・cakeが、実行可能になっているか。<br />
・cakeシェルの先頭が、#!/usr/local/bin/bashであるか。</p>
<p><strong>(5) アプリの入っているフォルダへカレントを移動し、bakeする。</strong></p>
<pre style="margin-left:20px; color:blue; font-size:12px; width:400px">% cd ~/apps/app1
% cake bake

Welcome to CakePHP v1.2.4.8284 Console
---------------------------------------------------------------
App : app1
Path: /home/×××××/apps/app1
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[Q]uit
What would you like to Bake? (D/M/V/C/P/Q)
>
</pre>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/408.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/408.html" />
	</item>
		<item>
		<title>PHP基礎</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/400.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/400.html#comments</comments>
		<pubDate>Sat, 01 Aug 2009 02:22:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=400</guid>
		<description><![CDATA[CakePHPするにもPHP基礎を知っていた方が良い。
分かりやすいPHPを学ぶサイト。　ＰＨＰ入門サイト
]]></description>
			<content:encoded><![CDATA[<p>CakePHPするにもPHP基礎を知っていた方が良い。<br />
分かりやすいPHPを学ぶサイト。　<a href="http://php.xenophy.com/index.html">ＰＨＰ入門サイト</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/400.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/400.html" />
	</item>
		<item>
		<title>CakePHP 文字化け</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/392.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/392.html#comments</comments>
		<pubDate>Sun, 26 Jul 2009 09:29:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=392</guid>
		<description><![CDATA[CakePHPをさくらインターネットで運用して、文字化けが起こりました。
【設定】
・さくらインターネットのMySQLデータベースは、utf8_general_ci
・viewsのdefault.ctp（いわゆるHTML [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPをさくらインターネットで運用して、文字化けが起こりました。</p>
<p><strong><span style="color: #993366;">【設定】</span></strong><br />
・さくらインターネットのMySQLデータベースは、utf8_general_ci<br />
・viewsのdefault.ctp（いわゆるHTMLを書いている部分）は、charset=UTF-8</p>
<p><strong><span style="color: #993366;">【状況】</span></strong><br />
・default.ctpに直接記述している部分の表示はＯＫ<br />
・CakePHPを使ってテーブルから取りだし表示している部分のみ文字化け（どうやらEUCのよう）。</p>
<p><strong><span style="color: #993366;">【対処】</span></strong><br />
・database.phpに、&#8217;encoding&#8217; =&gt; &#8216;utf8&#8242;　パラメタを追加で設定</p>
<p>※これで、正しく表示されるようになりました。<br />
以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/392.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/392.html" />
	</item>
		<item>
		<title>CakePHPをさくらインターネットにインストール</title>
		<link>http://mori.moripower.jp/eqwip/cakephp/370.html</link>
		<comments>http://mori.moripower.jp/eqwip/cakephp/370.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 14:04:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[エクウィップメント]]></category>

		<guid isPermaLink="false">http://mori.moripower.jp/?p=370</guid>
		<description><![CDATA[(1)　CakePHPサイトからインストール
・現時点のStable最新バージョンは、1.2.3.8166
(2)　さくらインターネットへコピー
・/home/UserName/cake/　に解凍したファイルをコピーする [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(1)　<a title="CakePHPサイト" href="http://cakephp.jp/" target="_blank">CakePHPサイト</a>からインストール</strong><br />
・現時点のStable最新バージョンは、1.2.3.8166</p>
<p><strong>(2)　さくらインターネットへコピー</strong><br />
・/home/UserName/cake/　に解凍したファイルをコピーする。<br />
※UserNameは、適宜、各自のさくらＩＤに置き換えて下さい。</p>
<p><strong>(3)　CakePHPの設定方針</strong><br />
・<a href="http://www.cafechantant.com/blog/2007/09/17/%E3%81%95%E3%81%8F%E3%82%89%E3%81%A7-cakephp/" target="_blank">Cafe Chantant Blog</a> を参考にさせて頂きました。<br />
・複数のアプリを同じcakeライブラリで使い回せるよう、cakeディレクトリを/home/UserName 配下に置く。</p>
<ul>
<li>セキュリティ的な観点から、appディレクトリはDocumentRoot（さくらの標準では、/home/UserName/www）からは見えないところに置く。DocumentRootに配置するのは、webrootディレクトリのみ。</li>
<li>CakePHPで複数のアプリを作成するので、appディレクトリはアプリごとにコピーして配置。</li>
<li>同様に、webrootディレクトリもアプリごとにコピーして配置。各アプリへのアクセスは、http://www.○○○.com/app1/  みたいな感じでアクセス。</li>
</ul>
<p><strong>(4)　アプリ用ディレクトリ配置</strong><br />
・/home/UserName/apps/　を作成する。<br />
・/home/UserName/apps/app1/<br />
・解凍したファイルのcake_1.2.3.8166/appディレクトリを上記app1としてコピーする。</p>
<p><strong>(5)　webrootディレクトリをDocumentRootに配置</strong><br />
・/home/UserName/www/app1/<br />
・解凍したファイルのcake_1.2.3.8166/app/webrootディレクトリを上記app1としてコピーする。<br />
・/home/UserName/apps/app1/のwebrootは、削除してかまわないでしょう。</p>
<p><strong>(6)　webroot(app1)のindex.phpを修正</strong>（DSとは、&#8221;/&#8221;と同じ。この記述を推奨）<br />
<code>define('ROOT',  DS. 'home'. DS. 'UserName'. DS. 'apps');<br />
define('APP_DIR',  'app1');<br />
define('CAKE_CORE_INCLUDE_PATH',  DS. 'home'. DS. 'UserName'. DS. 'cake');</code></p>
<p><strong>(7)　modrewriteの修正</strong><br />
・/home/UserName/www/app1/.htaccess　に、「RewriteBase   /app1」を追加</p>
<p><strong>(8)　データベースの設定</strong><br />
・/home/UserName/apps/app1/config　の「database.php.default」を「database.php」にして、下記の修正をする。<br />
・prefixをつけているのは、複数のアプリを作る場合に分かりやすい。<br />
<code>class DATABASE_CONFIG<br />
{<br />
var $default = array( 'driver'   =&gt; 'mysql',<br />
'host'     =&gt; 'mysqlXX.db.sakura.ne.jp',<br />
'login'    =&gt; 'UserName',<br />
'password' =&gt; 'password',<br />
'database' =&gt; 'UserName',<br />
'prefix'   =&gt; 'app1_');<br />
・・・<br />
}</code></p>
<p><strong>(9)　確認</strong><br />
・http://www.○○○.com/app1/  にアクセスして、下記のようになればＯＫ<br />
<a href="http://mori.moripower.jp/wp-content/uploads/2009/07/cp20090717.jpg" rel="lightbox[370]"><img src="http://mori.moripower.jp/wp-content/uploads/2009/07/cp20090717-300x224.jpg" alt="cp20090717" title="cp20090717" width="300" height="224" class="alignnone size-medium wp-image-389" /></a></p>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://mori.moripower.jp/eqwip/cakephp/370.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://mori.moripower.jp/eqwip/cakephp/370.html" />
	</item>
	</channel>
</rss>
