アーカイブ: 2008年9月

xmlを扱う時の注意点

パーマリンク 2008/09/25 16:25:19 著者: cakephp メール
カテゴリ: ビュー, コントローラー

CakePHP1.2 RC2

xml データを扱う場合、Controller で下記のようにすると、配列に格納してくれるので、その後の処理がとてもやり易くなります。

uses('Xml');
$file = '/path/to/sample.xml';
$xml = new Xml($file);
$xml_array = Set::reverse($xml); 


ここで注意が必要なことがあります。
xml のデータで名前が小文字で始まるものは、値が存在する場合は、そのまま小文字で渡されてくるのですが、値が空の場合は、先頭の文字が大文字に変更されて渡されます。

どうしてこのような現象が起こるかというと、cake/libs/set.php 内の Set::reverse() の処理において、

$key = Inflector::camelize($child->name);

という処理があり、更に cake/libs/inflector.php の function camelize() を見てみると、

function camelize($lowerCaseAndUnderscoredWord) {
    $replace = str_replace(" ", "", ucwords(str_replace("_", " ", $lowerCaseAndUnderscoredWord)));
    return $replace;
}

という処理がされており、この中の ucwords がアルファベットの先頭が小文字の場合、大文字に変更してくれています。

このままでは、View で受け取る際に 先頭が大文字でくるのか、小文字でくるのかがわからないので不便です。

ですので、対処方法の一つとして、Controller の配列を受け取る際に強制的に Inflector::camelize() を呼び出して、形式を固定してしまえば、View 側でデータがあるなしに関わらず決まった形式で記載することができます。

デバック情報を日本語で表示する方法

パーマリンク 2008/09/22 19:56:46 著者: cakephp メール
カテゴリ: 設定, Vendors

CakePHP1.2 RC2

RC3対応版になりました。詳しくはこちら

#本ツールは kuma が作成しました。

開発時にはデバック情報を表示させると思いますが、標準では英語のメッセージが表示されます。
そのメッセージを日本語にする方法です。

■手順1
こちらのファイルをダウンロード

■手順2
ファイルを解凍
 生成ファイル
  CakePHP_1.2_trans_1.0.0\app\jpn\LC_MESSAGES\default.po

■手順3
解凍したファイルの設置
 設置場所
 app/jpn/LC_MESSAGES/default.po

これでエラーメッセージが日本語になります。
画面例:トップページ
画面例:エラーページ

CSS も下記の部分を変更すると綺麗に収まります。

/* font-family:'Gill Sans','lucida grande',helvetica, arial, sans-serif; */
/* font-family: Courier, monospace; */
font-family: Arial;


※不具合や要望などありましたら、こちらからご連絡ください

1つのカラムのデータのみ取得する方法

パーマリンク 2008/09/22 18:43:53 著者: cakephp メール
カテゴリ: モデル, コントローラー

CakePHP1.2 RC2

通常の find を利用すると、データを配列で取得できますが、一つのカラムのデータのみが欲しい場合は、下記のようにすると便利です。

$conds = array('id' => 1);
e($this->Sample->field('name', $conds));

これで"samples"テーブルの"id"が"1"の"name"のみを取得することができます。

携帯サイトの404ページの作成方法

パーマリンク 2008/09/19 15:50:34 著者: cakephp メール
カテゴリ: 携帯

CakePHP1.2 RC2

PC と携帯が共存しているサイトで、404 エラーが発生すると通常は PC 用の 404 エラーページが表示されます。

そこで、携帯用の 404 エラーページを表示するために、app_controller.php に下記内容を書きます。

function beforeRender()
{
    if (isset($this->params['prefix'])) {
        if (isset($this->viewVars['code']) && $this->viewVars['code'] == '404') {
            $this->viewPath = $this->params['prefix'] . '_' . $this->viewPath;
        }
    }
}

これで、携帯サイトにて 404 が発生した場合は、"prefix" の設定が "mobile" なら、"mobile_errors" というフォルダ内の error404.ctp ファイルを読みにいきます。
つまり、app/views/mobile_errors/ フォルダを作成し、その中に error404.ctp を作成すれば携帯用の404ページが表示されるという感じです。



関連記事

携帯対応(基本編)

パーマリンク 2008/09/19 08:50:03 著者: cakephp メール
カテゴリ: 携帯

CakePHP1.2 RC2

携帯版の対応をする時の基本的な内容です。
ここでは、http://example.com/m/ のように /m/ がつくと携帯版になるようにします。

まず、app/config/routes.php に /m/ がついた時の振り分けを記載します。

Router::connect('/m/:controller/:action', array('prefix' => 'mobile'))


続いて、Controller

function mobile_sample()
{
}

通常(PC 用)の Action 名の前に routes.php で設定した prefix + _(アンダーバー)をつけた Action を用意します。
あわせて、View も app/views/samples/mobile_sample.ctp というようなファイル名で設置します。

Layout の変更もします。
AppController

function beforeRender()
{
    if (isset($this->params['prefix'])) {
        $this->layout = $this->params['prefix'] . '_' . $this->layout;
    }
}

app/views/layouts/mobile_default.ctp というファイルを設置すると、そちらを読みにいきます。


これで一通りの準備はできましたが、携帯特有の処理として、app/app_controller.php に下記内容を追記します。

function afterFilter()
{
    parent::afterFilter();

    if (isset($this->params['prefix'])) {
        $this->output = mb_convert_kana($this->output, 'rak');
    }
}

これで、カタカナを半角にできます。
また、ここで文字コードの変換(SJIS)も行うことが出来ます。

SSLでSocket通信

パーマリンク 2008/09/17 19:10:59 著者: cakephp メール
カテゴリ: モデル, Behaviors@ビヘイビア

CakePHP1.2 RC2

Webservice Behavior を利用して Socket 通信を行うことが出来ます。

まず、app/models/behaviors/ にこちらのファイルを設置します。

次に、Model で Webservice Behavior を呼び出すようにします。

var $actsAs = array('Webservice');


最後に Controller の Action 内に処理内容を書きます。

$options = array();
$options['port'] = '443';
$options['request']['uri']['scheme'] = 'https';
$result = $this->Test->request('post', array('data' => $data, 'url' => $url, 'options' => $options));

$url : 通信先のURL
$data : 通信先に渡したいデータの配列

これで SSL の Socket 通信を行うことができます。

テーブルのカラム名を一発で取得する方法

パーマリンク 2008/09/16 16:59:53 著者: cakephp メール
カテゴリ: モデル

CakePHP1.2 RC2

テーブルのカラム名を全て取得するには、Model 内で下記のように書くことで取得できます。

$columns = array_keys($this->getColumnTypes());

HtmlHelper::link()のデフォルト設定

パーマリンク 2008/09/14 19:19:45 著者: cakephp メール
カテゴリ: ヘルパー

CakePHP1.2

HtmlHelper::link()を使えば、リンクタグを生成してくれます。
その時の表示文字に対して、htmlspecialchars をデフォルトでつけてくれます。

該当箇所

[cake/libs/view/helpers/html.php]
if ($escapeTitle === true) {
	$title = htmlspecialchars($title, ENT_QUOTES);
} elseif (is_string($escapeTitle)) {
	$title = htmlentities($title, ENT_QUOTES, $escapeTitle);
}


$title以外にも、第3パラメータの$htmlAttributes内部の文字もエスケープしてくれます。

CakePHPで可逆暗号

パーマリンク 2008/09/10 15:25:59 著者: cakephp メール
カテゴリ: Vendors, PEAR

CakePHP1.2 RC2

可逆暗号を行うには、PEAR の Crypt_Blowfish を利用します。

app/vendors/ 配下に PEAR で取得した Crypt フォルダを設置。

Controller

App::import('Vendor', 'Crypt_Blowfish', array('file' => 'Crypt' . DS . 'Blowfish.php'));
$key = 'secret keyword';

$blowfish =& new Crypt_Blowfish($key);

$password = 'あかさたた';

// 暗号化
$encrypt= base64_encode($blowfish->encrypt($password));

// 復号化
$decrypt = $blowfish->decrypt(base64_decode($encrypt));

routes.phpで正規表現を使う

パーマリンク 2008/09/04 21:02:22 著者: cakephp メール
カテゴリ: 設定

CakePHP1.2 RC2

routes.php にあれこれと書くことで、プログラム先を制御することができます。
固定の値なら良いのですが、http://www.example.com/200/ のように数字の部分が変化する場合で、それらを全て同じコントローラで受けたいとなると、正規表現を使いたくなります。

その書き方です。

Router::connect('/:id/', array('controller' => 'sample', 'action' => 'index'), array('id' => '[0-9]+'));


参考:3.4.5 Routesの設定

Shellの使い方

パーマリンク 2008/09/02 23:39:13 著者: cakephp メール
カテゴリ: Vendors, Shells

CakePHP1.2 RC2

CakePHP1.2 から Shell で簡単に呼び出せるようになりました。

app/vendors/shells/ 配下に処理を書いたスクリプトを配置します。

[app/vendors/shells/test.php]
class TestShell extends Shell
{
    var $uses = array('Test');

    function sample()
    {
       // 処理
    }
}


呼び出し方は、cake/console/ で

cake test sample

とすると、先ほど設置した test.php 内の sample が処理されます。

ただしテスト環境において、DB を利用する場合、「テスト環境でのDBの切り替え方」の方法をとっていると、DB の接続情報が「default」となってしまうので注意しましょう。

2008年9月
 << < 現在> >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

CakePHPに関する情報をまとめていきます。

開発スピードがアップできればうれしいです。

>>連絡はこちらへどうぞ



CakePHP最新版
CakePHP 1.2.3.8166


CakePHPの書籍

CakePHPによる実践Webアプリケーション開発

CakePHP1.2で作成する人にオススメ。
とても参考になります。

まるごとPHP!(vol.2)

安藤さんの解説が載っています。
AmazonのPagination部分は参考になります。

CakePHPによるWebアプリケーション開発

まだ読んだことありません

CakePHPポケットリファレンス
CakePHPポケットリファレンス
CakePHP1.2 でやるなら、これがあると何かと便利♪

CakePHP徹底入門
CakePHP徹底入門
CakePHP1.2 を今から始めるならここから

Fast CakePHP
Fast CakePHP
シンプルでわかりやすい CakePHP の入門書

CakePHPガイドブック
CakePHPガイドブック
CakePHP1.1 ではとても参考にした CakePHP 最初の入門書

検索

XMLフィード

16ブログ     multiblog