Php 在同一视图中使用多个模块

Php 在同一视图中使用多个模块,php,zend-framework,Php,Zend Framework,我正在用Zend Framework 1.12开发一个web应用程序,这对我来说是新的东西,我不确定如何做我想做的事情 编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语 在我的主页上,模块索引,我做了我想用它做的事情,创建了一些动作和所有的东西,但我想添加一个搜索引擎,我将自己制作 例如,问题是我想将搜索引擎创建为一个名为search的单独模块,但将SearchForm放在主页中。点击submit将把表单中的数据发送到搜索模块 我不太明白如何做到这一点,而不必访问/搜索我的表单和所

我正在用Zend Framework 1.12开发一个web应用程序,这对我来说是新的东西,我不确定如何做我想做的事情

编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语

在我的主页上,模块索引,我做了我想用它做的事情,创建了一些动作和所有的东西,但我想添加一个搜索引擎,我将自己制作

例如,问题是我想将搜索引擎创建为一个名为search的单独模块,但将SearchForm放在主页中。点击submit将把表单中的数据发送到搜索模块

我不太明白如何做到这一点,而不必访问/搜索我的表单和所有相关操作

我必须使用视图辅助对象吗

此外,首页中的搜索表单将是某种快速搜索,访问/搜索将显示更详细的研究表单

有人能告诉我如何从索引模块访问searchForm,或者将我重定向到文档中讨论这个问题的部分吗?我的研究不成功,谷歌也帮不了我


编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语…

首先,将searchform构建为viewHelper,然后您可以在多个视图中重用它。 表单代码段中的action属性设置为searchModule/controller/action


另外,还要研究Zend文档中的ViewHelper和表单。

实际上,我更喜欢将其作为一个an,然后使用一个标准来显示搜索表单

让我示范一下:

实际操作助手只是启动一个表单并准备显示它。我将把表单结构留给您

//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;
    }
}
我将helper放在控制器的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 ?>
//在控制器中使用帮助器
类IndexController扩展Zend\u控制器\u操作
{
公共职能预分配()
{
//设置操作帮助器并将其指定给占位符
$this->\u helper->layout()->search=$this->\u helper->search(
“/index/display”、“搜索集合!”、“Title”);
}
//在您的视图脚本中
我喜欢将占位符放在我的master layout.phtml中,这样每当我填充占位符时,它都会显示出来。现在,您所要做的就是按照您的意愿设置它的样式

请记住:与任何html表单一样,操作参数只是一个url,因此可以将任何有效的url分配给表单操作。在本例中,我使用了
/controller/action
参数,但还有许多其他方法可以将url传递给表单。url帮助器是一种很好的方法

url($urlpoptions,$name,$reset,$encode):基于 在命名路由上。$URLPOPTIONS应该是 特定路由使用的键/值对


我会用一种不太复杂的方式,用简单的html编写搜索表单,并将其提交给/search控制器。否则,您必须使用视图帮助器。因此,如果我理解,我必须将表单放入视图帮助器中,并在开始时编写类似“$this->form->setAction(“mywebsite.com/search”)?我意识到我犯了一个愚蠢的错误,在我指控制器时使用了术语模块。我想你的解决方案仍然有效(?)是的,不用模块约定就可以了。好的,我会的。谢谢你的帮助!