0

Zend Framework 1.12 を使用して Web アプリケーションを開発していますが、これは私にとって新しいことであり、やりたいことを行う方法がわかりません。

編集:モジュールについて話すとき、私はコントローラーを意味します、申し訳ありませんが、私はまだ用語を間違えています...

私のホームページ、モジュール Index で、やりたいことを作成し、いくつかのアクションとすべてのものを作成しましたが、自分で作成する検索エンジンを追加したいと思います。

問題は、たとえば Search という名前の別のモジュールとして検索エンジンを作成したいのですが、SearchForm をホームページに配置したいということです。送信を押すと、フォームから検索モジュールにデータが送信されます。

フォームと関連するすべてのアクションにアクセスするために /search にアクセスしなくても、それを行う方法がよくわかりません。

View Helper を使用する必要がありますか?

また、フロント ページの searchForm は、QuicKSearch のようなもので、/search にアクセスすると、より詳細な調査フォームが表示されます。

誰かが Index モジュールから searchForm にアクセスする方法を説明したり、それについて話しているドキュメントの部分にリダイレクトしたりできますか? 私の研究はうまくいかず、Google も私を助けてくれません。

編集:モジュールについて話すとき、私はコントローラーを意味します、申し訳ありませんが、私はまだ用語を間違えています...

4

2 に答える 2

1

まず最初に、検索フォームを viewHelper として作成してください。その後、いくつかのビューで再利用できます。searchModule/controller/action に設定されたフォーム スニペットの action 属性。

さらに、Zend Documentation で viewHelpers と Forms に関する調査を行います。

于 2012-11-28T16:42:49.497 に答える
0

私は実際にはこれをアクション ヘルパーとして行い、標準のプレースホルダー ビュー ヘルパーを使用して検索フォームを表示することを好みます。

実演させてください:

実際のアクション ヘルパーは、フォームを開始して表示の準備をするだけです。フォームの構造はお任せします。

//the action helper
//Just fill in the args for the form to be displayed
class NameSpace_Controller_Action_Helper_Search extends Zend_Controller_Action_Helper_Abstract
{
    public function direct($action, $label = null, $placeHolder = null)
    {
        $form = new Application_Form_Search();
        //set the action
        $form->setAction($action);
        //set the submit button text
        $form->search->setLabel($label);
        //set the hint text displayed in the form window
        $form->query->setAttribs(array('placeholder' => $placeHolder,
            'size' => 27,
        ));

        return $form;
    }
}

コントローラーの predispatch メソッドにヘルパーを配置して、コントローラーの各アクションが検索フォームを使用できるようにし、すべてのページで検索フォームを作成する必要があります。

//to use the helper in your controller
class IndexController extends Zend_Controller_Action
{

    public function preDispatch()
    {
        //setup action helper and assign it to a placeholder
        $this->_helper->layout()->search = $this->_helper->search(
                '/index/display', 'Search Collection!', 'Title');
    }

//in your view script
<?php echo $this->layout()->search ?>

プレースホルダーをマスターのlayout.phtmlに配置して、プレースホルダーにデータを入力するたびに表示されるようにします。あとは、好きなようにスタイルを設定するだけです。

覚えておいてください:他の HTML フォームと同様に、アクション パラメータは単なる URL であるため、有効な URL をフォーム アクションに割り当てることができます。この例では/controller/actionパラメーターを使用しましたが、URL をフォームに渡す方法は他にもたくさんあります。URLヘルパーは、それを行うための良い方法として思い浮かびます。

url($urlOptions, $name, $reset, $encode) : 名前付きルートに基づいて URL 文字列を作成します。$urlOptions は、特定のルートで使用されるキーと値のペアの連想配列である必要があります。

于 2012-11-29T07:51:28.460 に答える