蛋糕中的url helper返回127.0.0.1:8888?为什么?

时间:2011-09-29 21:34:38

标签: php cakephp

我正在使用cakephp url HTML helper,如下所示:

<?php echo $this->Html->url(array('controller' => 'communities', 'action' => 'view'), true); ?>

但是,它正在撤回以下网址:http://127.0.0.1:8888/communities/view 这个127.0.0.1:8888在哪里?我怎么能改变它?

PS:如果我删除第二个参数的'true',则不会发生这种情况。

2 个答案:

答案 0 :(得分:1)

您正在返回控制器URL地址。第二个参数说,那个路径应该是相对的。 控制器地址是“社区/视图”,但第二个参数(相对=假)是http://127.0.0.1:8888/communities/view

答案 1 :(得分:1)

Html::url()方法的第一个参数是CakePHP URL数组,第二个参数是一个布尔值,指示是否应返回完整(绝对)URL。

在你的情况下,

<?php 
echo $this->Html->url(array('controller' => 'communities', 'action' => 'view'), true); 
?> 

显示网址 http://127.0.0.1:8888/communities/view 因为您通过将第二个参数设置为true表示您想要完整的绝对URL,所以您在localhost(IP地址127.0.0.1)上运行该站点并使用端口8888(:8888部分)。

如果您使用

<?php 
echo $this->Html->url(array('controller' => 'communities', 'action' => 'view')); 
?> 

您只会看到/communities/view,因为第二个参数未设置且默认为false。

当第二个参数设置为true时,它始终显示基于运行该应用程序的域的完整绝对URL。因此,当您将网站上传到生产环境时,Html::url()会返回http://www.example.com/communities/view,例如。

如果您检查API,则可能无法在HtmlHelper页面上找到url方法。这是因为HtmlHelper实际上从Helper类(http://api.cakephp.org/file/cake/libs/view/helper.php#method-Helperurl)继承了该方法。