我目前在搜索控制器中有一个搜索表单,因此唯一可以通过的方式是通过/search/
。我必须重构我的代码,以便此搜索表单不仅出现在搜索控制器中,而且还出现在整个网站中。Zend - 在网站上重构全局表单
(代码心不是确切我不得不重新键入一些吧)
我的类,它扩展Zend_Form
位于application/forms/forms/SearchForm.php
:
class Form_SearchForm extends Zend_Form {
public function init() {};
}
我的搜索器是一样的东西..
class SearchController extends Zend_Controller_Action
{
public function search() {
$searchForm = new Form_SearchForm();
$this->view->form = $searchForm;
}
}
在我的Bootstrap.php中,我有一个模型的自动加载器:
protected function _initAutoload() {
$autoLoader = Zend_Loader_Autoloader::getInstance();
$resourceLoader = new Zend_Loader_Autoloader_Resource(
array(
'basePath' => APPLICATION_PATH,
'namespace' => '',
'resourceTypes' => array(
'form' => array(
'path' => 'forms',
'namespace' => 'Form_',
),
'model' => array(
'path' => 'models/',
'namespace' => 'Model_',
),
),
)
);
return $autoLoader;
}
我想知道,这样在视图中产生全局搜索表单我可以存储我的代码。
我的全球布局文件位于application/layouts/scripts/layout.phtml
,目前吐出动态内容区域:
<div id="main">
<?php echo $this->layout()->content;?>
</div>
如果我只是形式添加到该layout.phtml或者是有一些通用的控制器,我应该使用?
编辑:对不起,也没有指定,但如果例如我想不包括它1-2个特殊页面(可能是一个管理员部分)..如果我硬编码到layout.phtml它仍然会出现..或者我应该提供不同的布局文件来说,管理区域?
对不起,你失去了我,你是否介意扩大并为我的新手自我贬低? – 2009-11-22 09:40:32
你更喜欢哪个选项?我不认为我知道正确的方法。但我认为最正确的是第一个,但现在太复杂了。 – 2009-11-22 09:44:40
使一个单独的类很简单,我现在将为此添加一个代码。如何将Form_SearchForm的实例添加到Zend_Registry中,你可以自己找出:) – 2009-11-22 09:45:27