setPluginLoader($loader, $type):
$loader はプラグインローダーオブジェクト、
$type は上であげた型名のいずれかを指定します。
これは、指定した型に対応するプラグインローダーを新しく設定します。
getPluginLoader($type):
$type に対応するプラグインローダーを取得します。
addPrefixPath($prefix, $path, $type = null):
プレフィックスとパスの関連を、
$type で指定したローダーに追加します。
$type が null の場合は、すべてのローダーにパスを追加します。
その際には、それぞれプレフィックスに
"_Validate"、"_Filter" そして "_Decorator" を追加し、
パスには "Validate/"、"Filter/" そして
"Decorator/" を追加します。
追加するフォーム要素クラス群をすべて共通の階層に配置する場合は、
このメソッドでベースプレフィックスを設定すると便利です。
addPrefixPaths(array $spec):
複数のパスを、ひとつあるいは複数のプラグインローダーに追加します。
配列の各要素は、キー 'path'、'prefix' および
'type' を含む配列とします。
getValue()
で取得する際に行われます。
addPrefixPath() を用いてそれを
getUnfilteredValue() メソッドを使用します。
addFilter($nameOfFilter, array $options = null)
addFilters(array $filters)
setFilters(array $filters) (すべてのフィルタを上書きします)
getFilter($name) (指定した名前のフィルタオブジェクトを取得します)
getFilters() (すべてのフィルタを取得します)
removeFilter($name) (指定した名前のフィルタを削除します)
clearFilters() (すべてのフィルタを削除します)
addPrefixPath() を用いてそれを
addValidator() の 3 番目のパラメータに配列形式で指定します。
$min と $max を指定しています。
$options で、キー 'messages' にメッセージテンプレートを指定します。
これは キー/値 のペアの配列となります。
これを使用するには、そのバリデータのさまざまな検証エラーに対応する
エラーコードを知っておく必要があります。
addValidators() を使用します。
このメソッドには、配列の配列を渡します。
各配列の要素は 1 から 3 となり、これが
addValidator() に渡されます。
isValid() に渡します。
$context をサポートしています。
$context に渡します。一方、
breakChainOnFailure が true
の場合はどれかひとつのバリデータが検証に失敗した時点で処理を終了します。
バリデータは、適切な順で指定するようにしましょう。
setRequired(true) を使用することができます。
デフォルトではこのフラグは false です。
この場合は、isValid()
に何も値が渡されなかった場合はバリデーションチェインをスキップします。
この振る舞いを変更するにはいくつかの方法があります。
isValid()
に渡されるとバリデータはスキップされます。
このフラグを切り替えるには setAllowEmpty($flag)
を使用します。フラグを false にすると、
値が空の場合でもバリデータが実行されるようになります。
isValid() は
スタックの最上位にこのバリデータを追加します。そして
breakChainOnFailure フラグを設定します。
これにより、必須フラグがその意味どおりに動作するようになります。
入力が渡されなかった場合は検証がその時点で失敗し、
結果をユーザに返します。それ以降のバリデータは実行されません。
値が空である時点で無効な内容であることが確定しているからです。
setAutoInsertNotEmptyValidator($flag)
に false を渡せばこの機能を無効にすることができます。
この場合、 isValid()
がバリデータチェインに勝手に
'NotEmpty' バリデータを追加することはなくなります。
setRequired($flag) および
isRequired() は、'required' フラグの状態を設定あるいは取得します。
これを setAllowEmpty($flag) および
getAllowEmpty() は、オプション要素
(required フラグが false に設定されている要素)
の挙動を変更します。'allow empty' フラグが true の場合、
値が未入力のときはバリデータチェインに渡しません。
setAutoInsertNotEmptyValidator($flag) は、
その要素が必須項目であるときに
'NotEmpty' バリデータをバリデータチェインの先頭に追加するかどうかを指定します。
デフォルトでは、このフラグは true です。
addValidator($nameOrValidator, $breakChainOnFailure = false, array $options = null)
addValidators(array $validators)
setValidators(array $validators) (すべてのバリデータを上書きします)
getValidator($name) (指定した名前のバリデータオブジェクトを取得します)
getValidators() (すべてのバリデータを取得します)
removeValidator($name) (指定した名前のバリデータを削除します)
clearValidators() (すべてのバリデータを削除します)
addErrorMessage($message):
フォームの検証エラーの際に表示するエラーメッセージを追加します。
複数回コールすると、新しいメッセージはスタックに追加されます。
addErrorMessages(array $messages):
フォームの検証エラーの際に表示する複数のエラーメッセージを追加します。
setErrorMessages(array $messages):
フォームの検証エラーの際に表示する複数のエラーメッセージを追加します。
それまでに設定されていたすべてのメッセージを上書きします。
getErrorMessages():
定義済みのカスタムエラーメッセージの一覧を取得します。
clearErrorMessages():
定義済みのカスタムエラーメッセージをすべて削除します。
markAsError():
検証に失敗したものとしてフォームにマークします。
hasErrors():
要素が、検証失敗か無効とマークのいずれかの状態になっているかどうかを取得します。
addError($message): add a message to the custom
エラーメッセージをカスタムエラーメッセージスタックに追加し、
要素を無効とマークします。
addErrors(array $messages):
複数のエラーメッセージをカスタムエラーメッセージスタックに追加し、
要素を無効とマークします。
setErrors(array $messages):
指定したメッセージでカスタムエラーメッセージスタックを上書きし、
要素を無効とマークします。
This is some descriptive text regarding the element.
addDecorator()
の最初の引数として渡すのではなく、ひとつの要素からなる配列を渡します。
この配列には、デコレータオブジェクトあるいはデコレータ名を指すエイリアスを指定します。
addDecorators() メソッドおよび
setDecorators() メソッドでは、
デコレータを表す配列を 'decorator' オプションに渡す必要があります。
addDecorator($nameOrDecorator, array $options = null)
addDecorators(array $decorators)
setDecorators(array $decorators) (すべてのデコレータを上書きします)
getDecorator($name) (指定した名前のデコレータオブジェクトを取得します)
getDecorators() (すべてのデコレータを取得します)
removeDecorator($name) (指定した名前のデコレータを削除します)
clearDecorators() (すべてのデコレータを削除します)
__call()
で捕捉し、メソッド名の残りの部分にもとづいてデコレータを探します。
見つかった場合は、そのデコレータ
render() メソッドにコンテンツとして渡されます。次の例を参照ください。
setName() および getName()
でアクセスします。
setLabel() および getLabel()
でアクセスします。
setOrder() および
getOrder() でアクセスします。
setValue() および getValue()
でアクセスします。
setDescription() および getDescription()
でアクセスします。
setRequired() および getRequired()
でアクセスします。このフラグはデフォルトでは false です。
setAllowEmpty() および getAllowEmpty()
でアクセスします。このフラグはデフォルトでは true です。
setAutoInsertNotEmptyValidator($flag)、
値を調べるには autoInsertNotEmptyValidator() を使用します。
setOptions(array $options)setConfig(Zend_Config $config)setTranslator(Zend_Translate_Adapter $translator = null)getTranslator()setDisableTranslator($flag)translatorIsDisabled()setName($name)getName()setValue($value)getValue()getUnfilteredValue()setLabel($label)getLabel()setDescription($description)getDescription()setOrder($order)getOrder()setRequired($flag)getRequired()setAllowEmpty($flag)getAllowEmpty()setAutoInsertNotEmptyValidator($flag)autoInsertNotEmptyValidator()setIgnore($flag)getIgnore()getType()setAttrib($name, $value)setAttribs(array $attribs)getAttrib($name)getAttribs()setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type)getPluginLoader($type)addPrefixPath($prefix, $path, $type = null)addPrefixPaths(array $spec)addValidator($validator, $breakChainOnFailure = false, $options = array())addValidators(array $validators)setValidators(array $validators)getValidator($name)getValidators()removeValidator($name)clearValidators()isValid($value, $context = null)getErrors()getMessages()addFilter($filter, $options = array())addFilters(array $filters)setFilters(array $filters)getFilter($name)getFilters()removeFilter($name)clearFilters()setView(Zend_View_Interface $view = null)getView()addDecorator($decorator, $options = null)addDecorators(array $decorators)setDecorators(array $decorators)getDecorator($name)getDecorators()removeDecorator($name)clearDecorators()render(Zend_View_Interface $view = null)setOptions() や
setConfig() で設定を変更することもできます。
一般に、キーの名前は次のようになります。
prefixPath は
addPrefixPaths() に渡されます。
setAttrib (ただし、
setAttribs は
setConfigsetOptionssetPluginLoadersetTranslatorsetViewinit() で独自の初期化ロジックをあなたの要素に追加し、
loadDefaultDecorators()
でデフォルトのデコレータのリストをあなたの要素に設定します。,
StringTrim フィルタが必要で、
かつ正規表現による入力検証を行うことになるとしましょう。
ついでに、表示用に独自のデコレータ 'My_Decorator_TextItem'
も使用するものとします。さらに、標準の属性
'size' や 'maxLength'、そして 'class' なども設定します。
このような要素は、次のように定義します。
My_Element_Text
型となりました。先ほど説明したような機能を持つテキストボックスです。
loadDefaultDecorators()
があります。このメソッドは、条件付きで
要素にデフォルトのデコレータセットを読み込みます。
継承したクラスで、このデコレータ群を置き換えることができます。