0

次のようなコントローラーから作成された Zend_Form があります。

        $form = new Zend_Form;
        $form->setAction('/ad/add')->setMethod('post')->setAttrib('id', 'add_form');
        $form->addElement('text', 'name', array(
            'label' => 'Name',
            'description' => 'Ex.: Samsung Galaxy Tab 10.1',
            'validators' => array(
                'alnum',
                'notEmpty',
                array('stringLength', array('min' => 3, 'max' => 150))
            ),
            'required' => true
        ));
        $form->addElement('textarea', 'description', array(
            'label' => 'Description',
            'description' => 'Make sure you give an accurate description of your item.',
            'validators' => array(
                'alnum',
                'notEmpty',
                array('stringLength', array('min' => 10, 'max' => 255))
            ),
            'required' => true
        ));
        $form->addElement('submit', 'Submit');

ビューからそれを出力すると、正常に機能し、dl および dd マジックでレンダリングされます。

私が今欲しいのは、このフォームに ajax 画像アップロード機能を追加することです。各画像は ajax によってアップロードされ、div に表示され、フォームの非表示フィールドにアップロードされたファイルの ID が入力されます。フォームのマークアップ内に画像アップロードビットを入れながら、どうすればこれを達成できますか?

4

1 に答える 1

2

ビュースクリプトデコレータを使用します。iframeを介して画像をアップロードする必要があると思います。ビュースクリプトデコレータのphtmlファイル内に配置できます。

フォームクラス内で行います。

$dec = new Zend_Form_Decorator_ViewScript();
$dec->setViewScript('Form.phtml');

$this->setDecorators(array($dec,'form'));

Form.phtml内で要素をレンダリングします

<?php echo $this->element->username ;?>
<?php echo $this->element->image ; ?>

iframeをそのまま追加します。

Viewスクリプトデコレータについて詳しく知るには

http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.viewScript

于 2012-06-27T03:39:34.240 に答える