Zend framework 如何在zend中定义当前url(框架的内部作业)
请告诉什么脚本使用zend framework定义当前URL?更确切地说,我感兴趣的是使用ZEND定义域名:这个Zend framework 如何在zend中定义当前url(框架的内部作业),zend-framework,php,Zend Framework,Php,请告诉什么脚本使用zend framework定义当前URL?更确切地说,我感兴趣的是使用ZEND定义域名:这个$\u服务器['HTTP\u主机]还是这个 $\u服务器['SERVER\u NAME']?(或者可能是其他原因) 另外,(我在文档中搜索但没有找到,(我不知道这个框架),我也在谷歌中搜索,但也没有找到我问题的答案?尝试使用:$this->getRequest()->getRequestUri()获取当前请求的URI 在视图脚本中,使用:$this->url()获取当前url 或通过实
$\u服务器['HTTP\u主机]
还是这个
$\u服务器['SERVER\u NAME']
?(或者可能是其他原因)
另外,(我在文档中搜索但没有找到,(我不知道这个框架),我也在谷歌中搜索,但也没有找到我问题的答案?尝试使用:
$this->getRequest()->getRequestUri()
获取当前请求的URI
在视图脚本中,使用:$this->url()
获取当前url
或通过实例使用静态集成Zend控制器前端:
$uri=Zend_Controller_Front::getInstance()->getRequest()->getRequestUri()代码>
您可以通过singleton获取URI实现的值,以获取request()数据的值:
在视图上,将其用作:
echo $this->serverUrl(true); # return with controller, action,...
您应该避免硬代码,例如示例(不要使用!):
在视图上使用as代替本例:
$uri = $this->getRequest()->getHttpHost() . $this->view->url();
如果您想在ZEND中使用getRequest,请进行更多探索
跳过下面的内容(尸检示例如何工作)。
完整的示例代码getRequestUri()如何工作以及isRequest为什么改为使用$\u服务器
是因为在特定平台上,is随机获取数据:
首先,如果uri为null,那么如果从IIS集合请求,则为HTTP_X_REWRITE_URL。如果没有,请检查IIS7重写的uri(包括编码的uri)。如果不在IIS上,则请求URI将检查HTTP主机名的方案,或者如果失败,将其用作原始路径信息并获取查询字符串
如果设置了,则通过类中返回的对象字符串$this
自动获取数据
如果失败,将设置一个解析字符串,然后设置它
if ($requestUri === null) {
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
$requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
} elseif (
// IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
isset($_SERVER['IIS_WasUrlRewritten'])
&& $_SERVER['IIS_WasUrlRewritten'] == '1'
&& isset($_SERVER['UNENCODED_URL'])
&& $_SERVER['UNENCODED_URL'] != ''
) {
$requestUri = $_SERVER['UNENCODED_URL'];
} elseif (isset($_SERVER['REQUEST_URI'])) {
$requestUri = $_SERVER['REQUEST_URI'];
// Http proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
$schemeAndHttpHost = $this->getScheme() . '://' . $this->getHttpHost();
if (strpos($requestUri, $schemeAndHttpHost) === 0) {
$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
}
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
$requestUri = $_SERVER['ORIG_PATH_INFO'];
if (!empty($_SERVER['QUERY_STRING'])) {
$requestUri .= '?' . $_SERVER['QUERY_STRING'];
}
} else {
return $this;
}
} elseif (!is_string($requestUri)) {
return $this;
} else {
// Set GET items, if available
if (false !== ($pos = strpos($requestUri, '?'))) {
// Get key => value pairs and set $_GET
$query = substr($requestUri, $pos + 1);
parse_str($query, $vars);
$this->setQuery($vars);
}
}
$this->_requestUri = $requestUri;
return $this;
采埃孚1号或2号?&$request->getRequestUri()
不包含域,因此这将是两个独立的问题。据我所知,ZF2将是更新(更好)的版本:)所以答案:ZF2
。“$request->getRequestUri()不包含域”如何?url也必须始终包含域,对吗?不,getRequestUri()
反映了来自HTTP协议第一行的内容(f.ex.HTTP/1.1 GET/path/to/file
),非常感谢,这对于这个框架用户来说是一个很好的答案,但我对其他内容感兴趣。。。也就是说,我感兴趣的是如何在这个方法中定义cuurent url:getRequestUri()
,在这个方法中写入了什么脚本来定义当前url(更确切地说是域名)?这是$\u服务器['SERVER\u NAME']
?请原谅我的英语。请看这里并点击return$this->\u requestUri代码>您可以查看它的工作方式。
$uri = $this->getRequest()->getHttpHost() . $this->view->url();
if ($requestUri === null) {
if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
$requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
} elseif (
// IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
isset($_SERVER['IIS_WasUrlRewritten'])
&& $_SERVER['IIS_WasUrlRewritten'] == '1'
&& isset($_SERVER['UNENCODED_URL'])
&& $_SERVER['UNENCODED_URL'] != ''
) {
$requestUri = $_SERVER['UNENCODED_URL'];
} elseif (isset($_SERVER['REQUEST_URI'])) {
$requestUri = $_SERVER['REQUEST_URI'];
// Http proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
$schemeAndHttpHost = $this->getScheme() . '://' . $this->getHttpHost();
if (strpos($requestUri, $schemeAndHttpHost) === 0) {
$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
}
} elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
$requestUri = $_SERVER['ORIG_PATH_INFO'];
if (!empty($_SERVER['QUERY_STRING'])) {
$requestUri .= '?' . $_SERVER['QUERY_STRING'];
}
} else {
return $this;
}
} elseif (!is_string($requestUri)) {
return $this;
} else {
// Set GET items, if available
if (false !== ($pos = strpos($requestUri, '?'))) {
// Get key => value pairs and set $_GET
$query = substr($requestUri, $pos + 1);
parse_str($query, $vars);
$this->setQuery($vars);
}
}
$this->_requestUri = $requestUri;
return $this;