1

オーバーレイ/ライトボックス/toplayerに表示されるアップロードフォームがあります。複数のコントローラーの複数のアクションでのみ使用できます。

このフォームを作成するには、最大6行のコードが必要であり、そこからパラメータを取得するにはREQUESTオブジェクトにアクセスする必要があります。

必要なアクションでフォームを簡単に作成できるように、このコードをどこに配置すればよいですか。

4

1 に答える 1

2

この機能をアクションヘルパーに入れます。アクションヘルパーは、任意のコントローラーアクションから直接呼び出すことができ(遅延ロードされます)、アクションヘルパーは、要求オブジェクトやビューなど、コントローラーアクションが実行するすべてのものにアクセスできます。

例:

<?php

class My_Action_Helper_FormCreator extends Zend_Controller_Action_Helper_Abstract {
    public function direct($options = null)
    {
        $request  = $this->getRequest();
        $view     = $this->getActionController()->view;
        $form     = new Application_Form_SomeForm();

        // set form options here...

        $view->form = $form; // optional - assign form directly to the view

        return $form;
    }
}

そのコードをlibrary/My/Action/Helper/FormCreator.php(または必要に応じてクラス名を変更して)配置します。

次に、アクションで、次のように呼び出します。

$form = $this->_helper->FormCreator();

最後に、このアクションヘルパーの場所をヘルパーブローカーに通知する必要があります。これを行うには、これをブートストラップに追加します。

protected function _initActionHelpers() {
    Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helper');
}

お役に立てば幸いです。

于 2012-06-05T23:16:39.970 に答える