3

ここで書き方を読むことができます:

http://framework.zend.com/manual/en/zend.validate.writing_validators.html

class MyValid_Float extends Zend_Validate_Abstract
{

1) これはどこに置くべきですか?

アプリケーション/デフォルト/バリデーター? アプリケーション/ビュー/ヘルパー/... ?

2) アプリケーションのどこかにこれを登録する必要がありますか?

更新: これが私のブートストラップの例です:

include_once 'config_root.php';
set_include_path ( $PATH );

require_once 'Initializer.php';
require_once "Zend/Loader.php";
require_once 'Zend/Loader/Autoloader.php';

// Set up autoload.
$loader = Zend_Loader_Autoloader::getInstance ();
$loader->setFallbackAutoloader ( true );
$loader->suppressNotFoundWarnings ( false );

// Prepare the front controller.
$frontController = Zend_Controller_Front::getInstance ();
$frontController->throwExceptions(true);
$frontController->registerPlugin ( new Initializer ( PROJECT_ENV ) );

// Dispatch the request using the front controller.
try {
    $frontController->dispatch ();

} catch ( Exception $exp ) {
    $contentType = "text/html";
    header ( "Content-Type: $contentType; charset=UTF-8" );
    echo "an unexpected error occurred.";
    echo "<h2>Unexpected Exception: " . $exp->getMessage () . "</h2><br /><pre>";
    echo $exp->getTraceAsString ();
}

SO、ここに追加する必要がありますか:

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => APPLICATION_PATH,
    'namespace' => '',
));

$resourceLoader->addResourceType('validate', 'validators/', 'My_Validate_');

次に、ファイル IN を作成する必要があります (この構成ではデフォルト モジュールを使用していることに注意してください):

アプリケーション/デフォルト/バリデーター/ValidateSpam.php

そして、validateSpam.php には次のようなものがあります。

class My_Validate_Spam extends Zend_Validate_Abstract {

確認していただけますか?

ありがとう

4

2 に答える 2

6

次に、アプリケーションの Bootstrap クラスに配置application/validators し、次の関数を追加します。

protected function _initAutoload () {

        // configure new autoloader
        $autoloader = new Zend_Application_Module_Autoloader (array ('namespace' => '', 'basePath' => APPLICATION_PATH));

        // autoload validators definition
        $autoloader->addResourceType ('Validator', 'validators', 'Validator_');
}

Zend Bootstrap Autoloadingに関する詳細

別の方法については、このブログで説明されています。このカスタム バリデーターを使用しているフォームのコントローラーのコンストラクターには、追加の行があります。

class JD_Form_Controller extends Zend_Form
{
 public function __construct($options = null)
 {        
   // path setting for custom classes MUST ALWAYS be first!
   $this->addElementPrefixPath('JD_Form_Validator','JD/Form/Validator','validate');
   ...
 }
 ...
}
于 2011-06-22T13:14:46.110 に答える
1

次の行を application.ini に追加して実行します:-

autoloadernamespaces[] = "App_"

次に、カスタム バリデーターを (たとえば) /library/App/Validate/MyCustomValidator.php に配置します。

次に、次のようなものを使用してバリデーターを作成できます。

class App_Validate_MyCustomValidator() extends Zend_Validate_Abstract

それは私にとってはかなりうまく機能し、シンプルで実装が簡単です。

于 2011-06-22T14:51:48.597 に答える