Zend表单setAction提交错误的url

时间:2013-06-13 02:48:47

标签: php zend-framework

我的Zend表单包含以下代码:

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

此处的表格显示正常:

  

本地主机/ MY_PROJECT /公共/接触/索引

但是,表格提交给:

  

本地主机/接触/索引   代替:   本地主机/ MY_PROJECT /公共/接触/索引

如何解决此问题并且是服务器配置问题?

1 个答案:

答案 0 :(得分: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方法本身中执行此操作。