我的Zend表单包含以下代码:
$this->setAction('/contact/index')->setMethod('post');
此处的表格显示正常:
本地主机/ MY_PROJECT /公共/接触/索引
但是,表格提交给:
本地主机/接触/索引 代替: 本地主机/ MY_PROJECT /公共/接触/索引
如何解决此问题并且是服务器配置问题?
答案 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方法本身中执行此操作。