0

CakePHPでJSON等で値を返す場合について

あ、そうそう。
使ってるけいくのVerですが、現在の最新安定Verである2.1.2です。
結構1.x系と違いがあるのでご注意を。(参考サイトが少なくて困るんですが(´・ω・`))

んで、Ajax使って動的なエレメントを作りたいのですが、
Modelから引っ張ったデータをJSON形式でJavascriptに返したいわけです。
しかし、基本的にはViewが紐付けられてるのでAction内で設定。

 
$this->audoRender = false;
 

これだけ。ほら簡単(。╹ω╹。)

0

PHP Simple HTML DOM Parserを使う

自分のサイトにlast.fmの今再生しているプレイリストを動的に表示したかったんだけど、
あそこのAPIが使えなさ過ぎるし、RSS配信はとてもぢゃないけどリアルタイムぢゃないし、
どうせ自分の分だけなのでページからパースしたのをDBに突っ込んでAjaxで動的に表示しちゃおう的な計画なの

参考:PHP Simple HTML DOM Parser
ここからDLしてください。

まずは読み込んで、パースしたい目的のサイトURLからごそっとHTMLを持ってきます。

 
include("../homuhomu/simple_html_dom.php);  //落としてきたファイルの置き場所
 
$html = file_get_html("パースしたいサイトのURL");

この$htmlがURL先のHTMLをパースしたDOMのオブジェクトとなる。
これの使い方

 
$hoge = $html->find(div#hoge); //id="hoge"のdiv要素以下が全て取れる
$hoge = $html->find(div.hoge);  //class="hoge"のdiv要素以下が全て取れる
$hoge = $html->find(div.hoge a);  //class="hoge"のdiv要素以下のaタグ要素が全て取れる
$hoge = $html->find(div.hoge a)->plaintext;  //class="hoge"のdiv要素以下のaタグ要素内のテキスト部分が全て取れる
 

ほら簡単。3秒ですね3秒….はい(´・ω・`)
cssのセレクタと同様に使えるので、Jquery触ってる人とかは簡単に使えますね。
セレクタはその他の指定方法もあるっぽい。
本家のドキュメントみてください。

あ、あと、これ結構重いです。
取得するDOMを循環参照するので、パースし過ぎるとメモリリークします。
なので、

 
$html->clear();
 

これを実行してキャッシュを消しましょう。

0

CakePHPの設定をする

はい、します。

とりあえず設置はしましたが、多少手を加えて開発出来る状態にします。
カラフルなページですね。信号と同様の意味合い。
赤のエラーは全て潰しましょう。黄色い部分はのちほど。

 
Warning (512): CakePHPのフォルダ/app/tmp/cache/ is not writable [CORE/Cake/Cache/Engine/FileEngine.php, line 320]
 

と出てる場合、apacheの権限不足のためキャッシュが書き込めないので

 
$ chmod -R o+w app/tmp/cache/
 

はい、消えましたね?
次に以下のエラー

 
Notice (1024): Please change the value of 'Security.salt' in app/Config/core.php to a salt value specific to your application [CORE/Cake/Utility/Debugger.php, line 806]
Notice (1024): Please change the value of 'Security.cipherSeed' in app/Config/core.php to a numeric (digits only) seed value specific to your application [CORE/Cake/Utility/Debugger.php, line 810]
 

app/Config/core.phpの179行目あたりにある以下の部分を任意の文字列に変更

 
/**
 * A random string used in security hashing methods.
 */
    //Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
    Configure::write('Security.salt', 'poyopoyopoyopoyopoyopoyopoyopoyo'); //任意の文字列(記号も可?らしい)
/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
        //Configure::write('Security.cipherSeed', '76859309657453542496749683645');
        Configure::write('Security.cipherSeed', '4649464946494649');   //任意の数字
 

これでおk。
はい次。

 
Your database configuration file is NOT present.
Rename APP/Config/database.php.default to APP/Config/database.php
 

ということでデータベースの設定無いと。
なので、該当のファイルをコピー・リネームしてさーばーにうp。
さーばー直なら

cp app/Config/database.php.default app/Config/database.php

をする。んで、この中身を自分のDB用に設定するのね。

このあとは、一旦modelは使わずにCとVで操作に慣れてみた。
作りたいものがやっと浮かんだので、この後はDB作って色々弄ります。
今回「CakePHPを使いたい」が先行しちゃったので、何作るか決めてませんでした(´・ω・`)

0

CakePHPを使う(wordpressも)

けいくはまだ使ったことなかったので。(今ちょうどお仕事お暇なの(´・ω・`))

とりあえず今後再利用等は考えず、
単体のテストサイトを作ろうの流れ。

既存のぶろぐもこのドキュメントルートに入れ込むので
ちょっと一手間あり。

参考:CakePHPによる開発::マニュアル::1.3コレクション

まずはCakePHP本体のソースをお好きなディレクトリに。

 
sudo git clone https://github.com/cakephp/cakephp.git cakephp
 

んで、httpd.confを弄ってDocumentRootを
cakephp/app/webrootに変更。

ついでに別件↓

・wordpressを引越して、それはそれで単体で運用する

wordpressのディレクトリを丸々ドキュメントルートに移動。
で、

 
RewriteEngine On
RewriteCond $1 !^/blog/             //←この行を追加(blogはwordpressのディレクトリ名)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
 

CakePHPは、設定したルーティングによってmod_rewriteで飛ばされるので、
デフォルトだとこのディレクトリは全てコントローラとアクションの配下にある。
ということで、この例外処理を追加します。

とりあえずこれで、トップページもwpも普通に見れる様になりましたね?
なんかwarning出てますけど…
続きはまた。

1 2 3 4