5

Zend_Formで何かをクリアし、要素にフィルターを追加するのに少し助けが必要です。フォームにフィルターを追加すると、フォームが投稿されたときに、そのフィルターがコントローラーのディスパッチの一部として実行されたという印象を受けました。

ただし、フォームを恐ろしくテストすると、フィルターStripTagsが実行されていないようで、データにHTMLタグが含まれているデータを取得しています。

私のForm要素は次のようになります。

$address1 = new Zend_Form_Element_Textarea('address1');
    $address1->addFilter('StripTags')
        ->addFilter('StringTrim')            
        ->setAttrib('cols', 30)
        ->setAttrib('rows', 5)
        ->removeDecorator('DtDdWrapper')
        ->removeDecorator('label')
        ->removeDecorator('HtmlTag')

ただし、テキスト領域にhtmlタグを含むいくつかのデータを入力し、フォームが有効であることを確認するには、

$formData = $this->_request->getPost();
if($form->isValid($formData){
    ...

データにはタグが含まれています。strip_tags()関数を介してデータを渡すときにのみ削除されます。

私の質問は、StipTagsがフィルタリングする必要がある場合、なぜそうではないのかということだと思います。ここで何が欠けていますか。

4

2 に答える 2

8

isValid を呼び出した後にデータにアクセスする方法に関するコードを投稿しませんでした。$form->getValue('someElement')IIRC フィルターは、またはこれらの行に沿ってデータにアクセスする場合にのみ有効になります。

于 2009-07-13T19:50:16.270 に答える