Php Zend_表单和RESTful HTTP请求
我在Zend中实现了一个搜索表单(后端的SOLR)。 为了给用户提供更多的控制,我添加了一个用于应用某些内容过滤器的多检查框 事情是在以下步骤中发生的(请耐心听我说):Php Zend_表单和RESTful HTTP请求,php,http,zend-framework,nginx,zend-form,Php,Http,Zend Framework,Nginx,Zend Form,我在Zend中实现了一个搜索表单(后端的SOLR)。 为了给用户提供更多的控制,我添加了一个用于应用某些内容过滤器的多检查框 事情是在以下步骤中发生的(请耐心听我说): 请求已发出,类似于/search/?q=bla&filter=1 请求在控制器中重写为restful到:/search/query/bla/filter/1 如果用户删除筛选器1,添加筛选器2并提交请求,则请求变为:/search/query/bla/filter/1?q=bla&filter=2 如何使用它正确创建restfu
/search/?q=bla&filter=1
/search/query/bla/filter/1
/search/query/bla/filter/1?q=bla&filter=2
因此,总结一下:
如何正确使用Zend_表单创建RESTful HTTP请求?我想,您正在尝试解决一个不存在的问题。你在追求美学,而不是宁静的顺从 REST告诉您需要识别资源,而不是您的资源链接应该看起来很好(从某种意义上说)。但由于您的搜索是一种过滤器,因此使用QueryParam是完全可以接受的 我认为,您在REST中使用“搜索”一词是错误的。搜索不是一种资源(至少在您的情况下) 您可以通过执行以下操作来隐藏搜索实现:
GET /articles?q=foo&filter=1
Location: /articles/search/a125f41fbc135d
构建过滤器标准的方式应该无关紧要。
或者,您可能想将“搜索”定义为一种资源(实际上IIRC也是如此)
会导致如下结果:
GET /articles?q=foo&filter=1
Location: /articles/search/a125f41fbc135d
其中
a125f41fbc135d
是搜索的标识符,用于识别搜索资源。感谢您的详细回复。您的第一个解决方案是我正在使用的Zend_Paginator重新创建URL,这意味着我丢失了以“?q=”形式出现的GET请求,所有这些都是通过将其替换为URL控制器/action/page/number来实现的——我该怎么做呢?(在paginationcontrol视图中,它使用$this->url('page'=>$this->next)生成url);