Php Zend form setAction提交到错误的url

Php Zend form setAction提交到错误的url,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,我对zend表单中的setAction有问题。我有一个多页表单,我为所有子表单设置了相同的操作 $subForm->setAction('process') ->setMethod('post'); 我的表格正在索引操作、应用程序控制器、买方模块中呈现 但当我提交表单时,url被重定向/发布到url:(一个不存在的页面) 当我在我的机器上设置虚拟服务器时,它似乎可以工作,但当使用localhost或部署到任何其他服务器时,我无法使它工作 我尝试了整个url,但它似乎

我对zend表单中的setAction有问题。我有一个多页表单,我为所有子表单设置了相同的操作

$subForm->setAction('process')
        ->setMethod('post');
我的表格正在索引操作、应用程序控制器、买方模块中呈现 但当我提交表单时,url被重定向/发布到url:(一个不存在的页面)

当我在我的机器上设置虚拟服务器时,它似乎可以工作,但当使用localhost或部署到任何其他服务器时,我无法使它工作


我尝试了整个url,但它似乎不起作用,即
$subForm->setAction('buyer/application/process')
$subForm->setAction('application/process')

您是否有apache设置和ZF要求的重写规则


我总是发现使用Url帮助器从视图中设置表单的action属性最简单。像这样试试

<?php echo $this->form->setAction($this->url(array(
    'action' => 'process'
))) ?>

当您执行$subForm->setAction('process')时,它实际上是在/project/public/buyer/application处设置url的相对路径,这意味着它将假定project、public和buyer是目录,而process应该与application处于同一级别

试试这个:

$this->form->setAction('/application/process');
我不确定正确的url是什么,但我会尝试将该url与前导/一起使用,这样它就不再是相对的了。

$subForm->setAction($this->getView()->url(array('action'=>'process','controller'=>'application','module'=>'buyer'),null,true))
        ->setMethod('post');

在我看来,问题在于
进程
不是控制器中的操作。它看起来更像是被调用的方法或类。在ZF中,您最常看到的是将表单操作设置为操作

//set form action to a controller action where you can call process against the form.
$form->setAction('action')//or 'controller/action' or 'module/controller/action'

ZF参考资料对如何操作进行了相当广泛的讨论

我发现我的代码出了什么问题,似乎zend在处理我的url:- 作为买方控制器和应用程序操作,即,由于操作是索引,且不包含在我的url中。我的一段代码
$form->setAction('process')可以做的是,它将简单地用“进程”替换“应用程序”,假设该应用程序就是操作。如果我没有错的话,那可能是一个bug,或者看起来是这样


我将我的动作索引重命名为表单,现在它似乎正在工作。尽管我喜欢@Phil的建议。但是以防万一别人会

是的,我的重写规则设置得很好,所有其他页面都工作得很好。url应该是动作助手,对吗?我无法使用$this->url(),虽然我可以像$this->u helper->url->url(array('action'=>'process')那样使用它,但它似乎可以工作,但我有一个名为multipage的抽象类,它扩展了zend_表单,在准备子表单时,我从该类将操作设置为所有表单。我将不得不对一些代码进行更改(在这个场景中,实际上控制器中的多个位置是我不喜欢的),以使其工作。谢谢你的建议,但我很乐意等待,看看我是否有更好的建议,为什么我的一个不起作用。有两个名为“Url”的操作和查看帮助程序。我的示例来自视图脚本,但如果控制器中的action helper更适合您的配置,则可以使用它。在MVC应用程序中对URL字符串进行硬编码通常是个坏主意。最好使用路由名称或助手(URL生成器)绝对同意@Phil。在这一点上,我们只能对设置以及是否要处理文档根关闭或是否涉及模块进行假设。在不知道他想要的URL的情况下,在这一点上,一切都是猜测。这与phil建议的一样,只是你在controllerI中使用view helper。我认为你没有完全阅读问题,是的,过程是我的名字action@Rohan对不起,我误解了。