1

カスタムフォームの検証が必要でした。そこで、これに似た関数を書きまし

ここまでは順調ですね。しかし、PHPファイル/クラスをどこに置くかという問題が本当にあります。

それは論理的に見えるlibとしてvendor/の下に置くことになっていた。私はこのパスを使用しました:vendor / company / Validator/MyValidator.php。しかし、クラスを含める方法がわかりませんでした。

ベンダーモジュールを設定するための簡単なハウツーや、カスタムバリデーターを使用するために必要なものを教えてもらえますか?

インターネット上にはたくさんのチュートリアルがありますが、それらのほとんどは検証のロジックを扱っており、Zendの「基本」は扱っていません。

ありがとう!

編集:

このリンクを見つけて、コードを次のように構成しました。

私のコードは次のとおりです。

        use MyStuff\Validator\CustomValidator as CustomValidator;
        ...
        $inputFilter->add($factory->createInput(array(
            'name'     => 'zip',
            'required' => false,
            'filters'  => array(
                array('name' => 'Int'),
            ),
             'validators' => array(
                  array(
                      'name' => array( new CustomValidator ),
                      'options' => array(
                          'min' => 1,
                      ),
                  ),
                ),
        )));
        ...

フォームを送信しようとすると、バリデーターコードの一部がプレーンテキストとして表示され、クラスが見つからないという致命的なエラーが発生します...

4

2 に答える 2

4

ここで、ディレクトリ構造を想定します。

業者名:MyStuff

FQCN:MyStuff\Validator\AwesomeValidator;

ファイルパス:./vendor/mystuff/library/MyStuff/Validator/AwesomeValidator

Zend Framework 2 がオートローディングのPSR-0 標準に準拠していることを考えると、ベンダーのオートローダーにオートローダー パスを追加する必要があります。ZF2 は Composer を使用してオートロードを処理します。Composer を介して OWN Vendor をインストールすると、これは自動的に行われます。これを手動で行う必要がある場合は、内部で行いますcomposer.json

"autoload": {
    "psr-0": {
        "Mystuff\\": "vendor/mystuff/library/"
    }
}

これで十分に作業できることを願っています。

于 2012-12-18T13:52:04.790 に答える
0

composer を使用する代わりに、インクルードの問題を回避するためのより手動のアプローチがあります。このページのコメントは、手動で配置する場所を示すのに役立つ場合があります: http://framework.zend.com/manual/2.0/en/modules/zend.validator.writing-validators.html

于 2013-01-18T16:04:20.273 に答える