Validatorの拡張
拡張アプリでのValidatorの拡張の仕方を見ていきます。名前空間・クラス名に気をつけましょう。
ファイル名は任意ですが、わかりやすくする為、Validator.php とします。
例: extension/plugins/SamplePlugin/Validator.php
<?php namespace Acms\Plugins\SamplePlugin; class Validator { /** * sample * バリデーターのサンプルメソッド * * @param string $val - その変数の値 * @param string $arg - <input type="hidden" name="var:v#sample" value="ここの値"> * @return boolean - 入力が正しい場合は "true" そうでない場合は "false" を返す */ function sample($val, $arg) { /** * 例: * <input type="text" name="var" value="{var}"> * <input type="hidden" name="field[]" value="var"> * <input type="hidden" name="var:v#sample" value="cms"> * * <!-- BEGIN var:validator#sample --> * <p class="acms-admin-text-error">cmsという文字列を含めてください。</p> * <!-- END var:validator#sample --> * * {var}の中は,'a-blogcms' とする */ // name="var:v#sample" value="cms" で指定した // 文字列が含まれていなかったらエラーを出す return (strpos($val, $arg) !== false); } }
ServiceProviderの設定
これだけでは、通常の拡張方法と違い動作しません。動作させるためには、このクラスのオブジェクトをa-blog cmsに登録する必要があります。
ServiceProviderでValidator実装クラスを登録する
拡張アプリの基本で作成した ServiceProviderに少し手を加えます。
<?php namespace Acms\Plugins\SamplePlugin; use ACMS_App; use Acms\Services\Common\ValidatorFactory; class ServiceProvider extends ACMS_App { /* 省略... */ /** * サービスの初期処理 */ public function init() { $validator = ValidatorFactory::singleton(); $validator->attach('SampleValidator', new Validator); } /* 省略... */ }
ポイント
Acms\Services\Common\ValidatorFactory のオブジェクトを
ValidatorFactory::singleton();
で取得して 先ほど作成した Acms\Plugins\SamplePlugin\Validator を attach します。
- 第一引数: 被らないような任意の文字列
- 第2引数: 実装クラスのオブジェクト
これで拡張アプリをインストールすれば、Validator.php で実装したValidatorが利用できるようになります。