0

我的 Zend 表单有以下代码:

$this->setAction('/contact/index')->setMethod('post');

表格在这里显示良好:

本地主机/我的项目/公共/联系人/索引

但是,表单提交给:

localhost/contact/index 而不是:localhost/my_project/public/contact/index

我该如何解决这个问题,这是服务器配置问题吗?

4

1 回答 1

4

问题是它不使用baseurl

最简单的解决方案是在视图中设置动作

//view.phtml
$form= $this->form; //Comes from controller or create a new instance
$form->setAction($this->baseUrl("contact/index"));
echo $form;

您还可以继承 Zend_Form 并修改 setAction 以使用 baseurl

您还可以设置表单的视图

class Application_Form_Something extends...{
      protect $_view;
      function setView($view){
        $this->_view->$view;
      }
      function setAction($url){
          parent::setAction($this->_view->baseUrl($url));
      }

}

//And in controller:

$form->setView($this->view);

在相关说明中,我发现了另一种设置 baseurl 的方法。这似乎是迄今为止最好的一个,虽然我不确定这是否是正确的做法。

class Application_Form_Something extends...{

      function setAction($url){
        $baseUrlHelper= new Zend_View_Helper_BaseUrl();
          parent::setAction($baseUrlHelper->baseUrl($url));
      }
}

您也可以在 init 方法本身中执行此操作。

于 2013-06-13T02:53:30.547 回答