ホーム > プログラミング

2008年11月25日 wa | コメント(0)

環境はCentOS

まずは、PHPのバージョンを5.1.6から5.2.xにあげる。
こちらのページを参考に、yumでバージョンアップしてみる。

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

リポジトリ追加
# vi /etc/yum.repos.d/utterramblings.repo

[utterramblings]
name=Jason'sUtterRamblingsRepo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

# yum --enablerepo=utterramblings update php

これで、PHPのバージョンアップは完了。
続いて、必要そうなものを同じく外部リポジトリからインストール
# yum --enablerepo=utterramblings install php-xml
# yum --enablerepo=utterramblings install php-pear
# yum --enablerepo=utterramblings install php-mbstring
# yum --enablerepo=utterramblings install php-pdo
# yum --enablerepo=utterramblings install php-mysql

いよいよ、Propelのインストールへと
こちらのサイトを参考に
# pear config-set preferred_state beta
# pear channel-discover pear.phpdb.org
# pear install --force phing/phing
# pear install --force phpdb/propel_generator
# pear install --force phpdb/propel_runtime
# pear install --force --alldeps Log
# pear config-set preferred_state stable

以上でインストールが完了。
設定やらなんやらはまたこんど。。。。

2008年11月18日 wa | コメント(0)

CakePHP 1.2のバリデーションがなかなか便利になっていたのでメモ。

たとえばこんな感じ

var $validate = array(
    'userid' => array(
        'notNull' => array(
           'rule' => VALID_NOT_EMPTY,
           'message' => "ユーザーIDを入力してください"
       ),
        'length' => array(
           'rule' => array('between', 4, 31),
           'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
       ),
);
こんな感じで複数のルールを指定できる。
でも、上記の場合だと何も入力しなかった場合「ユーザーIDを入力してください」というメッセージを表示させたいが、実際は「ユーザーIDは4文字以上31文字以下で入力してください」というメッセージが表示されてしまう。
そんなときは、ルールに「'last' => true,」を追加する。
var $validate = array(
    'userid' => array(
        'notNull' => array(
           'rule' => VALID_NOT_EMPTY,
           'message' => "ユーザーIDを入力してください"
           'last' => true,
       ),
        'length' => array(
           'rule' => array('between', 4, 31),
           'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
           'last' => true,
       ),
);
これで、何も入力しなかった場合は「ユーザーIDを入力してください」というメッセージが表示されます。

そんでもって、独自バリデーションルールも追加できる。
var $validate = array(
    'userid' => array(
        'notNull' => array(
           'rule' => VALID_NOT_EMPTY,
           'message' => "ユーザーIDを入力してください"
           'last' => true,
       ),
        'length' => array(
           'rule' => array('between', 4, 31),
           'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
           'last' => true,
       ),
        'notDuplication' => array(
           'rule' => array('isUseridExists', 'userid'),
           'message' => "このユーザーIDは使用できません。"
           'last' => true,
       ),
        'char' => array(
           'rule' => array('custom', '/^[A-Za-z0-9_]+$/i'),
           'message' => "ユーザーIDに無効な文字列が含まれています。"
           'last' => true,
       ),
);
function isUseridExists($data, $limit) {
    $exist_count = $this->find('count', array('conditions' => $data, 'recursive' => -1));
    return $exist_count < $limit;
}
ちなみに、重複チェックは新規登録するときだけでいんだけど・・・
という時は、そんなときは、ルールに「'on' => 'create',」を追加する。
これで、新規登録の時だけその該当ルールを通ります。 逆に、「'on' => 'update',」とすれば更新の時だけ該当ルールを通るようになります。 こんな感じです。
var $validate = array(
    'userid' => array(
        'notNull' => array(
           'rule' => VALID_NOT_EMPTY,
           'message' => "ユーザーIDを入力してください"
           'last' => true,
       ),
        'length' => array(
           'rule' => array('between', 4, 31),
           'message' => "ユーザーIDは4文字以上31文字以下で入力してください"
           'last' => true,
       ),
        'notDuplication' => array(
           'rule' => array('isUseridExists', 'userid'),
           'message' => "このユーザーIDは使用できません。"
           'last' => true,
           'on' => 'create',
       ),
        'char' => array(
           'rule' => array('custom', '/^[A-Za-z0-9_]+$/i'),
           'message' => "ユーザーIDに無効な文字列が含まれています。"
           'last' => true,
       ),
);
function isUseridExists($data, $limit) {
    $exist_count = $this->find('count', array('conditions' => $data, 'recursive' => -1));
    return $exist_count < $limit;
}

そんな訳で、かなり便利になりました。と思います。