如何在codeigniter中创建链接?

时间:2013-04-07 14:36:06

标签: php codeigniter url

抱歉,我说英语不好,请使用翻译。 如何在codeigniter中创建链接?

如果我想在之后使用固定链接怎么办?

每次在永久链​​接中进行更改时,我都必须更改整个系统代码吗?

是否有一个库从这些参数生成链接并且动态配置?

例如,如果我想从以下位置更改系统目录:

http://testing/webapp/index.php

为:

http://production/index.php

我需要更改所有代码吗? 这是什么最好的做法?

2 个答案:

答案 0 :(得分:3)

您可以使用codeingiter的方法base_url()和site_url()。

首先,您需要在控制器中加载URL帮助程序:

$this->load->helper('url');

请参阅下面的定义(根据CI文档,http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html


SITE_URL()

  

返回配置文件中指定的站点URL。 index.php   文件(或您在配置中设置为网站index_page的任何内容)   文件)将被添加到URL,您传递给的任何URI段也将添加到URL   函数和配置文件中设置的url_suffix。

     

我们鼓励您在需要生成时随时使用此功能   本地网址,以便您的网页在您的网站上变得更加便携   网址更改。

     

可以选择将段作为字符串或字符串传递给函数   阵列。这是一个字符串示例:

     

echo site_url(“news / local / 123”);上面的例子将返回   类似的东西:

http://example.com/index.php/news/local/123
     

以下是作为数组传递的段的示例:

$segments = array('news', 'local', '123');

echo site_url($segments);

BASE_URL()

  

返回您的站点基本URL,如配置文件中所指定。例如:

echo base_url();
     

此函数返回与site_url相同的内容,没有   index_page或url_suffix被追加。

     

与site_url一样,您可以将字符串或数组提供。   这是一个字符串示例:

echo base_url("blog/post/123");
     

上面的示例将返回类似于:

的内容
http://example.com/blog/post/123
     

这很有用,因为与site_url()不同,您可以为a提供字符串   文件,例如图像或样式表。例如:

echo base_url("/_user_guide_src_ci/images/icons/edit.png");
     

这会给你类似的东西:

http://example.com/images/icons/edit.png

答案 1 :(得分:1)

这正是配置文件中基本URL的用途。您之后唯一需要担心的是您的相对URL,您甚至可以通过在config文件夹中创建新文件夹来设置不同的环境

例如,如果我直接在配置文件夹

中设置我的config.php
$config['base_url'] = 'http://localhost/hello';

然后基本网址总是http:// localhost / hello现在让我说我有我的家庭开发环境和生产环境。如果我将config.php复制到名为production的config内的文件夹中,那么application / config / production / config.php将基本URL设置为:

$config['base_url'] = 'http://www.example.com/hello';

然后在我的index.php中设置:

define('ENVIRONMENT', 'production');

到处都需要改变环境Codeigniter会为我改变它。所以在实际网站上我使用生产环境,在家里我将环境改为开发,CI为我工作。

然后在你的代码中使用base_url()来建立你的链接。

例如:

 <a href="<?=base_url();?>hello_world">Hello World</a>

将产生:

//at home:
http://localhost/hello_world
//in production:
http://www.example.com/hello_world

有意义吗?