Posts tagged null

【OpenPNE カスタマイズ】バリデーションを行う ini ファイルの書式

3

OpenPNE のバリデーション処理を定義する ini ファイルの書式に関するメモです。

例えば ?m=pc&a=page_hoge という URL に対するバリデーションを行うときには /openpne/webapp_ext/modules/pc/validate/page/hoge.ini というファイルを作成します。
(続きを読む…)

[symfony] askeet 4日目

1

4日目です。

昨日までに作成した質問の一覧画面から質問の個別表示ページ

http://askeet/frontend_dev.php/question/show/id/1

にアクセスするとエラーになる。調べると show アクションもビューもない。
(続きを読む…)

jQuery でクッキーを扱う方法

1

jQuery でクッキーを扱うのを下記サイトを参考にやってみました。
javascriptライブラリjQueryでcookieを超簡単に扱う方法 : 4GALAXYのメモ
Klaus Hartl – Stilbüro : Cookie Plugin for jQuery

jquery.cookie.js の準備

jquery.cookie.js をダウンロードして HTML で使えるようにします。

<script type="text/javascript" src="jquery.cookie.js"></script>

(続きを読む…)

CakePHP1.2 モデルのデータをオブジェクトで扱う

0

少し前ですが下記の投稿を読んでちょっと興味があり色々と試してみました。
“取得データを配列からオブジェクトに変換” フォーラム – CakePHP Users in Japan
I want objects, not arrays! ? nuts and bolts of cakephp

モデルに下記のようなコードを書けばデータを取得するとオブジェクトとして扱えるということです。

function afterFind($results, $primary = false) {
    if($primary == true && !is_object($results)) {
        return Set::map($results);
    }
}

(続きを読む…)

CakePHP1.2 SimpleTest 値を検証する assert?メソッド

2

SimpleTest で使用する値を検証する assert?メソッド

assertTure

boolean assertTrue(boolean $result, [string $message])
$result が true か
(続きを読む…)

CakePHP1.2 SimpleTest でテストケースを作成する

6

CakePHP1.2 に SimpleTest をインストール で SimpleTest をインストールするところまでやったので、今度は実際にテストケースを作成してみます。

空のテストケースを作成する

app/test/cases/models に user.test.php を作成して以下のコードで保存する。

<?php
class UserTest extends User {
}
?>

(続きを読む…)

CakePHP1.2 で追加されるコンポーネントの3つのコールバック関数

1

New callback methods for components – cakebaker によると次にリリースされる CakePHP1.2 ではコンポーネントに3つのコールバック関数が追加されるようです。

beforeRender()

view のレンダリングの前、コントローラの beforeRender() メソッドの後に呼ばれる。

public function beforeRender($controller) {
}

(続きを読む…)

CakePHP1.2 「新規時のみ」or「更新時のみ」のバリデーション指定

0

CakePHP1.2 からバリデーションがかなり強力になっていますが、レコードを追加するときまたはレコードを更新するときのみにバリデーションルールを適用する指定方法がありました。

var $validate = array(
        'name' => array(
            'required' => true,
            'allowEmpty' => false,
            'on' => 'update'
            'message' => '名前を入力してください',
            ),
        );

(続きを読む…)

CakePHP1.2 バリデーションで共通ルールを作成するときに便利な userDefined

0

CakePHP1.2 バリデーションのルールを調べているときに気になっていた Validation クラスにある userDefined に関して調べてみました。
cake/libs/validation.php

function userDefined($check, $object, $method, $args = null) {
    return call_user_func_array(array(&$object, $method), array($check, $args));
}

と定義されています。

call_user_func_array は PHP の関数で、関数やクラスのメソッドをコールすることができます。

つまり独自バリデーションがこれを使用して実装できるということです。
使用方法はモデルに以下のようにバリデーションを定義します。

var $validate = array(
    'field' => array('rule' => array('userDefined',  'Model',  'method_name')),
);

function method_name ($data) {
    /*
      バリデーションのチェック
      エラーなら false 、エラーなしなら true を返す
    */
}

ただこれだと下記のように書けるのであまりありがたみがない。

var $validate = array(
    'field' => array('rule' => array('method_name'),
);

何に使えばいいのかと考えたところ、クラス名、メソッド名が指定できるのでシステムで共通のバリデーションを設定するときに使えるのではと思いました。多分これが一番うれしいところではないかと思います。

※ただ、app_model.php に共通にしたいバリデーションチェック用のメソッド名を書けばそれでいけるような気もする。

CakePHP1.2 バリデーションのルール

2

CakePHP1.2 のバリデーションのメモです。
詳しくは cake/libs/validation.php を見ると分かりやすいです。

半角英数字のみ

alphaNumeric

var $validate = array('field' => array('rule' => array('alphaNumeric')));

文字列の長さ

between

var $validate = array('field' => array('rule' => array('between', 6, 8)));
半角で6文字以上8文字以内

文字列が空

blank

var $validate = array('field' => array('rule' => array('blank')));

クレジットカード番号

cc

var $validate = array('field' => array('rule' => array('cc')));

比較

comparison

var $validate = array('field' => array('rule' => array('comparison', '>', 10)));
‘==’, ‘!=’, ‘< =’, など使用できる

正規表現

custom

var $validate = array('field' => array('rule' => array('custom', '/^[0-9]{3}\-[0-9]{4}$/')));
例として NNN-NNNN 形式の郵便番号のバリデーション

日付

date

var $validate = array('field' => array('rule' => array('date', 'ymd')));
‘dmy’, ‘mdy’, ‘ymd’, ‘dMy’, ‘Mdy’, ‘My’, ‘my’ が使用可

小数点の桁数チェック

decimal

var $validate = array('field' => array('rule' => array('decimal', 2)));

var $validate = array('field' => array('rule' => array('decimal', null, '/^[0-9]{2}\.[0-9]{2}$/')));
正規表現を指定してチェックすることも可。

メールアドレス

email

var $validate = array('field' => array('rule' => array('email')));

=== での比較

equalTo

var $validate = array('field' => array('rule' => array('equalTo', 'hoge')));
型も含めて等しいかチェック

拡張子

extension

var $validate = array('field' => array('rule' => array('extension', array('gif', 'jpg')));
ファイルの拡張子をチェック。許可したい拡張子を配列で指定。デフォルトは array(‘gif’, ‘jpeg’, ‘png’, ‘jpg’)

IPアドレス

ip

var $validate = array('field' => array('rule' => array('ip')));

最小文字数

minLength

var $validate = array('field' => array('rule' => array('minLength', 6)));

最大文字数

maxLength

var $validate = array('field' => array('rule' => array('maxLength', 12)));

数字

numeric

var $validate = array('field' => array('rule' => array('numeric')));

数字の範囲チェック

range

var $validate = array('field' => array('rule' => array('range', 0, 100)));
注意点は指定した数字は含まれない
上の例では 1?99 までが true

var $validate = array('field' => array('rule' => array('range')));
とすると有限数かどうかのチェック

URL

url

var $validate = array('field' => array('rule' => array('url')));

Go to Top