Fuelphp:バリデーションのルールを追加する

Fuelphpで用意されているバリデーションのルール以外に
自分で作成したバリデーションを追加したい場合があります。

コアクラス拡張することによって、新しいバリデーションのルールを作成することができます。

今回はFuelphpValidationクラス拡張し、バリデーションのルールを追加する方法をメモします。


バリデーションのルールを追加する方法

「fuel/app/classes」に「myvalidation.php」を作成します。

作成した「myvalidation.php」に追加したいバリデーションのルールを記述します。
下記は半角英数字チェックを追加した場合です。
追加する時は「_validation_」プレフィックスを付けて作成します。

<?php
class MyValidation
{
    // 半角英数字チェック
    public static function _validation_alphanum($data)
    {
        if(!empty($data)) {
            if (preg_match("/^[a-zA-Z0-9]+$/", $data)) {
                return true;
            }
            else {
                return false;
            }
        }
        return true;
    }
}

作成したバリデーションを使用する場合は下記のように記述します。
「add_callable()」で作成したバリデーションのクラスを読び出します。
後は「add_rule()」に作成したバリデーションを記述します。

$validation = \Validation::forge();
$validation->add_callable('myvalidation');

$validation->add('id', 'ID')
	->add_rule('required')
	->add_rule('alphanum');
$validation->run();

エラーメッセージを設定する場合は「fuel/app/lang/ja/validation.php」に新しいエラーメッセージを追加します。

return array(
	'alphanum' => ':labelは、半角英数字で入力してください。',
);

php:PECL APCのエラーが出た時の対処方法

PHPフレームワークのCakePHPCodeIgniterで作っているサイトでいつの間にかに
下記のエラーが大量に表示されていました。

Unable to allocate memory for pool.

色々検索してみると、APCという拡張モジュールのバグみたいです。

PECL APCのエラー(Unable to allocate memory for pool.)が出た時の対処方法をメモします。
下記のサイトを参考にさせていただきました。

PECL apcのエラー Unable to allocate memory for pool.


APCのエラー対処方法

サーバにSSHでログインし、「/etc/php.d/apc.ini」ファイルを修正します。
修正内容は下記のように変更します

apc.mmap_file_mask=/tmp/apc.XXXXX

↓(変更します)

apc.mmap_file_mask=/dev/zero

変更を保存したら、httpdをrestartします。

/etc/init.d/httpd restart

再起動後、サイトを確認するとエラーの表示が消えて正常に表示されました。


APC(Alternative PHP Cache)

PHPの中間コードのキャッシュや最適化を行い、PHPを高速化する拡張モジュールです。


Fuelphp:FuelPHP1.6のインストール

FuelPHP1.6インストールした時のメモです。
(手動でインストール)

FuelPHP1.6よりも前のバージョンと同じようにインストールしたところ、下記のメッセージが表示されました。

Composer is not installed. Please run "php composer.phar update" in the root to install Composer

FuelPHP1.6からはComposerインストールしないと動かないそうです。

SSHでサーバにログインし、FuelPHPをインストールしたディレクトリに移動します。
composer.pharを置いているディレクトリで下記を実行します。

php composer.phar update

実行後、ディレクトリのパーミッションを書き込み可能にするために下記を実行します。

php oil refine install

サイトにアクセスすると、FuelPHP1.6のWelcomeページが表示されます。
インストールが無事完了しました。

fuelphp_install

インストール方法はドキュメントに書いてあるのでしっかり確認しなきゃダメですね。

インストール方法 – インストール – FuelPHP ドキュメント