Php 在同一视图中使用多个模块
我正在用Zend Framework 1.12开发一个web应用程序,这对我来说是新的东西,我不确定如何做我想做的事情 编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语 在我的主页上,模块索引,我做了我想用它做的事情,创建了一些动作和所有的东西,但我想添加一个搜索引擎,我将自己制作 例如,问题是我想将搜索引擎创建为一个名为search的单独模块,但将SearchForm放在主页中。点击submit将把表单中的数据发送到搜索模块 我不太明白如何做到这一点,而不必访问/搜索我的表单和所有相关操作 我必须使用视图辅助对象吗 此外,首页中的搜索表单将是某种快速搜索,访问/搜索将显示更详细的研究表单 有人能告诉我如何从索引模块访问searchForm,或者将我重定向到文档中讨论这个问题的部分吗?我的研究不成功,谷歌也帮不了我Php 在同一视图中使用多个模块,php,zend-framework,Php,Zend Framework,我正在用Zend Framework 1.12开发一个web应用程序,这对我来说是新的东西,我不确定如何做我想做的事情 编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语 在我的主页上,模块索引,我做了我想用它做的事情,创建了一些动作和所有的东西,但我想添加一个搜索引擎,我将自己制作 例如,问题是我想将搜索引擎创建为一个名为search的单独模块,但将SearchForm放在主页中。点击submit将把表单中的数据发送到搜索模块 我不太明白如何做到这一点,而不必访问/搜索我的表单和所
编辑:当我谈到模块时,我指的是控制器,很抱歉,我仍然误解了术语…首先,将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”)?我意识到我犯了一个愚蠢的错误,在我指控制器时使用了术语模块。我想你的解决方案仍然有效(?)是的,不用模块约定就可以了。好的,我会的。谢谢你的帮助!