当我点击提交按钮时,我希望页面重定向到以下页面?
header('Location: /pdp/policy-info.phtml');
我在控制器代码中编写了上述代码,但我无法重定向到上面的页面。它停留在同一页面上。 文件名在视图中称为policy-info.phtml。
一旦我重定向,我能通过$ _POST访问我的表单值吗? 或者有其他选择。
答案 0 :(得分:7)
好吧,听起来好像你可能错过了一些概念:
您永远不会重定向到phtml文件。 (除非你已经编写了一些自定义重写/路由规则)Zend使用MVC架构,网址以这种方式存在:
/module/controller/view/key1/value1/keyx/valuex/通常zend url不会终止文件扩展名。此外,您永远不会直接从浏览器调用视图文件。
在表单标记中,您可以使用action属性指定表单提交的位置。对于您的网址,我假设是pdp控制器和策略信息操作
action="/pdp/policy-info/"
$this->_redirect('/pdp/policy-info/'); # maybe you want to execute some code and then execute # additional code in another controller without re-bootstrapping $this->_forward('policy-info', 'pdp');
http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.utilmethods
答案 1 :(得分:0)
实际上可能有几种方法可以做你想做的事情。我还没有尝试过第一种方法,但它应该可行。
如果是isPost(),则从控制器/操作中渲染一个新的veiw脚本:
public function myAction(){
$form = My_Form();
$this->view->form = $form;
//if form is posted and submit = Submit
if ($this_request->isPost() && $this_request->getPost()->submit == 'Submit') {
if ($form->isValid($this->_request->getPost()) {
//this is where you want to capture form data
$data = $form->getValues();
//render a new viewscript or _forward to a new action and perform your processing there.
$this->render('path to phtml file');
//if user needs to press a button to accept submit = accept
...do some more stuff...
}
}
}
我认为这个或某些变体会起作用。
注意:我认为_forward不会重置请求对象,因此不应影响$ _POST数据。
此外,如果此政策信息不需要用户提供额外输入且只是提供信息,您可以轻松地_forward('action')
进行空白操作,路由器将显示视图脚本。