0

私は独自の Zend_Form を持っておらず、ini ファイルですべての要素を宣言しただけです。ini ファイルから Zend_Form を作成しても問題はありませんが、ini ファイルで独自のカスタム バリデータを使用すると問題が発生します。常に Not Found In Registry エラーを返します。

現在、私のコードはこのようなものです。

[Bootstrap]

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
            'namespace' => 'MY',
            'basePath'  => dirname(__FILE__)
        ));

$resourceLoader->addResourceType('validator', 'forms/validate/', 'Form_Validate');

[ini file]
form.elements.new_password.options.validators.password.validator = "Password"

[Custom Validator]
<?php 

class MY_Form_Validate_Password extends Zend_Validate_Abstract
{
......

ここで何が足りないか教えてください。ありがとう!

4

1 に答える 1

0

これは考えすぎのケースです。

かなり新しいバージョン (v1.10 以降) の ZF1.x を使用していると仮定します。

というファイルがありますproject/application/configs/application.ini

標準の application.ini では次の行です。

includePaths.library = APPLICATION_PATH "/../library"

これは、すべてのライブラリ コード (カスタム バリデータが適合) がこのパスのディレクトリに属する​​ことを示しています。

また、次の行があります。

autoloaderNamespaces[] = "MY_"

これにより、ライブラリの名前がわかります (/library の下のディレクトリを定義します)。

したがって、カスタムバリデータMY_Form_Validate_Passwordは次の場所に存在します。

project
    /library
        /MY 
            /Form
                /Validate
                    Password.php

他には何も必要ありません。ブートストラップ コードはすべて、Zend Framework で予期されていないことを行う場合にのみ必要です。また、通常、バリデータはリソースとして登録されません。

クラスは次のように呼び出すことができます

$validator = new MY_Form_Validate_Password();

通常どおり、他のアクセス方法も同様に機能するはずです。

于 2013-05-13T10:41:28.413 に答える