私は実際にはこれをアクション ヘルパーとして行い、標準のプレースホルダー ビュー ヘルパーを使用して検索フォームを表示することを好みます。
実演させてください:
実際のアクション ヘルパーは、フォームを開始して表示の準備をするだけです。フォームの構造はお任せします。
//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 は、特定のルートで使用されるキーと値のペアの連想配列である必要があります。