ZF的当前路径问题?求帮忙。谢谢
小弟刚研究zendframework一段时间,遇到一个问题。希望各位大侠帮忙解决,先谢谢了
我做的一个后台,adminControll.php
访问是 http://网址/admin
看了很多地方包括教程之类的都有说了在初始化的时候写上这句,
$this->view->baseUrl = $this->_request->getBaseUrl();
但是我输出看了,只是一个 .
而且根本不能起到什么作用,我很多链接的地方都用 $this->baseUrl放在前面,但是打开页面老是出错,就是得不到正确的链接地址,到现在我只能写死,比如网址是http://www.123.com,现在要看一个articleAction 。那么我在页面上都会写死,http://www.123.com/admin/article
如果我换做是$this->baseUrl."/admin/article",可能会出错,比如我在单独一个页面上接上参数的时候就出错了http://www.123.com/admin/article/act/edit/id/1。这样写的话,得到的路径就很糟糕了。
可能我糊里糊涂表达的不太清楚,不知道大家能理解不?
这个路径问题害的我样式啊,图片啊都有可能会出错了。除非把路径写死。
在http://www.123.com/admin/article 页面用<link rel="stylesheet" href="../public/styles/global.css" type="text/css" />
显示正确.
而在http://www.123.com/admin/article/act/edit/id/1 这个页面上就出错了。但是它们调用的是同一个文件,地址路径是一样的,在网址上看来却是多了好多个文件夹。<link rel="stylesheet" href="../public/styles/global.css" type="text/css" />所以这样就错了。
我现在是写死了。直接<link rel="stylesheet" href="<?php echo $this->weburl;?>/public/styles/global.css" type="text/css" />
而<?php echo $this->weburl;?>就是http://www.123.com
我想来想去觉得这种方法太死了。
还有什么其他办法吗?
求解,谢谢高手帮忙。
[解决办法]
嗯,其实zf了很多获取url的功能。提供了很多方法可以灵活变通。
如果是在phtml中:
$this->baseUrl()表示的是
如果项目是demo1
表示的就是/demo1/public
既:
http://localhost/demo1/public
如果所以你的css在你可以用
echo $this->baseUrl().'/styles/global.css'
即:
http://localhost/demo1/public/styles/global.css
。baseUrl的含义就是从去掉域名开始算的。以后像是资源的引用进来不要用相对路径。用得话,要想清楚了
如果你获取网站的网址用
$this->serverUrl()会返回http://localhost