PHP Zend框架 - 如何从请求对象获取请求URI片段?

时间:2010-02-02 01:12:15

标签: php zend-framework request uri

说,例如我有一个URI http://127.0.0.1/somecontroller/someaction#12345,它带我进入someController控制器的someAction()动作。从那里,我可以通过$this->getRequest()检索Request对象。

我还能够从Request对象中检索有关URI的各种信息。

但是,我如何检索片段(即例如#之后的“12345”部分)? getRequestUri()getParams()都没有打开片段部分。

谢谢!

4 个答案:

答案 0 :(得分:26)

URL的片段部分永远不会通过GET请求(或任何类型的HTTP请求)发送到服务器,唯一可以获得它的方法是编写一个解析URL并发送的Javascript片段例如,片段通过Ajax返回服务器。

单靠PHP无法做到这一点。

答案 1 :(得分:3)

根据HTTP协议规范,忽略片段部分。但是,浏览器确实支持使用哈希重定向。

如果您自动生成哈希值,则可以将id作为请求参数传递: http://127.0.0.1/somecontroller/someaction/id/12345/#12345

然后:

$this->getRequest()->getParam('id')

但是这只会使用散列来处理这种情况,例如:当用户手动输入URL时。

答案 2 :(得分:1)

你不能使用:

explode("#",$_SERVER['REQUEST_URI'])

因为当你致电$_SERVER['REQUEST_URI']时,你永远不会在#之后得到这个词。例如,您的链接www.example.com/about#test,当您致电$_SERVER['REQUEST_URI']时,您只会获得www.example.com/about

答案 3 :(得分:0)

你不能使用php函数explode("#",$_SERVER['REQUEST_URI'])?也许我误解了这个问题。