的问题是,它不使用的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方法中做到这一点。
谢谢!但是:是不是在视图中注入业务逻辑的动作? –
是的。您也可以在控制器中执行此操作。 $ this-> view-> baseUrl而不是$ this-> baseUrl。 另一种替代方法是为表单设置视图。大多数情况下我都会看到更新的答案 –
,因此我提交到与呈现表单的url相同的url,所以setAction方法很少用在我的应用程序中 –