对不起,我英语不好,请使用翻译。如何在 codeigniter 中创建链接?
如果我想在之后使用永久链接怎么办?
每次更改永久链接时,我都必须更改整个系统代码?
是否有一个库可以根据这些参数生成链接并按照动态配置的方式运行?
例如,如果我想从以下位置更改系统目录:
http://testing/webapp/index.php
到:
http://production/index.php
我需要更改所有代码吗?对此的最佳做法是什么?
对不起,我英语不好,请使用翻译。如何在 codeigniter 中创建链接?
如果我想在之后使用永久链接怎么办?
每次更改永久链接时,我都必须更改整个系统代码?
是否有一个库可以根据这些参数生成链接并按照动态配置的方式运行?
例如,如果我想从以下位置更改系统目录:
http://testing/webapp/index.php
到:
http://production/index.php
我需要更改所有代码吗?对此的最佳做法是什么?
您可以使用 codeingiter 的方法 base_url() 和 site_url()。
首先,您需要在控制器中加载 URL 帮助程序:
$this->load->helper('url');
请参阅下面的定义(根据 CI 文档,http ://ellislab.com/codeigniter/user-guide/helpers/url_helper.html )
返回配置文件中指定的站点 URL。index.php 文件(或您在配置文件中设置为站点 index_page 的任何内容)将添加到 URL,您传递给函数的任何 URI 段以及配置文件中设置的 url_suffix 也将添加到 URL。
建议您在需要生成本地 URL 的任何时候使用此功能,以便在您的 URL 更改时您的页面变得更加便携。
可以选择将段作为字符串或数组传递给函数。这是一个字符串示例:
echo site_url("news/local/123"); 上面的示例将返回如下内容:
http://example.com/index.php/news/local/123
以下是作为数组传递的段的示例:
$segments = array('news', 'local', '123'); echo site_url($segments);
返回配置文件中指定的站点基本 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() 不同,您可以将字符串提供给文件,例如图像或样式表。例如:
echo base_url("/_user_guide_src_ci/images/icons/edit.png");
这会给你类似的东西:
http://example.com/images/icons/edit.png
这正是配置文件中基本 URL 的用途。之后您唯一需要担心的是您的相对 URL,您甚至可以通过在 config 文件夹中创建新文件夹来设置不同的环境
例如,如果我直接在 config 文件夹中设置我的 config.php
$config['base_url'] = 'http://localhost/hello';
然后基本 url 总是 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
有道理?