4

Zend_Forms の 1 つに奇妙な問題がありisValid()ます。フォームが無効であると正しく示されていますが、エラー メッセージは表示されません。どうしてそれが起こり得ますか?

コードはここにあり、特別なことは何もありません。$data投稿データの配列です。この問題は、ファイルが送信されない場合に発生します。

    $form = $this->getForm('Foto');
    if(!$form->isValid($data)) {
        var_dump( $form->getErrors() ); die;
        return false;
    }

getForm()まだ完了していない場合は、フォームを初期化します。フォーム自体はかなり単純です。

class Media_Forms_Foto extends Zend_Form
{
    /**
     * Initializer function. Setup forms fields.
     */
    public function init()
    {
        $this->setName('add Image');
        $this->setAction('media/gallery/addImage');

        $this->addElement('Hidden', 'gallery', array(
            'filters'    => array(),
            'validators' => array('Digits'),
            'required'   => false,
            'label'      => '',
        ));

        $this->addElement('File', 'foto', array(
            'required'      => true,
            'destination'   => ROOT_PATH .'public/upload/tmp/',
            'label'         => 'Foto',
            'validators'    => array(
                new Zend_Validate_File_IsImage(array(
                    'image/jpeg', 'image/gif', 'image/png'
                ))
            ),
            'maxFileSize'   => 2097152,
        ));

        $this->addElement('Submit', 'add', array(
            'required' => false,
            'ignore'   => true,
            'label'    => 'add Foto',
        ));

        $this->setAttrib('enctype', 'multipart/form-data');
    }
}

出力:

array(3) {
    ["gallery"]=>
        array(0) {
        }
    ["foto"]=>
        array(0) {
        }
    ["add"]=>
        array(0) {
        }
}
4

1 に答える 1

-4

ひょっとして jquery フォームプラグインを使っていませんか? その場合は、iframe モードを使用してファイルをアップロードしてみてください。

var options = {
    url: '/test/upload',
    success: function(response) {
    },
    beforeSubmit: disableSubmitButtons,
    iframe: true,
    dataType : 'json'
};

$('#testForm').ajaxForm(options);
于 2013-04-22T14:00:25.407 に答える