的問題是,它不使用的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方法很少用在我的應用程序中 –