Php 在CodeIgniter上添加URL变量

Php 在CodeIgniter上添加URL变量,php,codeigniter,variables,Php,Codeigniter,Variables,我想在CI 3.0上添加一个新的URL变量,如site\u URL或base\u URL 比如,;我想为管理区域添加一个admin\u url变量,为资产添加一个assets\u url变量 我查看了CI 3.0指南,但找不到解决方案 提前感谢。我的解决方案 创建新的帮助文件并将此文件添加到自动加载 所以 创建文件application/helpers/global_helper.php $autoload['helper'] = array('url','global'); public f

我想在CI 3.0上添加一个新的URL变量,如
site\u URL
base\u URL

比如,;我想为管理区域添加一个
admin\u url
变量,为资产添加一个
assets\u url
变量

我查看了CI 3.0指南,但找不到解决方案

提前感谢。

我的解决方案

创建新的帮助文件并将此文件添加到自动加载

所以

创建文件
application/helpers/global_helper.php

$autoload['helper'] = array('url','global');
public function admin_css($uri = '', $protocol = NULL)
    {
        $base_url = base_url('assets/staff/css').'/';

        if (isset($protocol))
        {
            $base_url = $protocol.substr($base_url, strpos($base_url, '://'));
        }

        if (empty($uri))
        {
            return $base_url.$this->item('index_page');
        }

        $uri = $this->_uri_string($uri);

        if ($this->item('enable_query_strings') === FALSE)
        {
            $suffix = isset($this->config['url_suffix']) ? $this->config['url_suffix'] : '';

            if ($suffix !== '')
            {
                if (($offset = strpos($uri, '?')) !== FALSE)
                {
                    $uri = substr($uri, 0, $offset).$suffix.substr($uri, $offset);
                }
                else
                {
                    $uri .= $suffix;
                }
            }

            return $base_url.$this->slash_item('index_page').$uri;
        }
        elseif (strpos($uri, '?') === FALSE)
        {
            $uri = '?'.$uri;
        }

        return $base_url.$this->item('index_page').$uri;
    }
在助手内部创建函数,例如:

<?php
    function admin_url(){
        return base_url() . "/admin/";
    }
添加到您的新助手


现在,您可以在system/helpers/url\u helper.php中的任何地方使用函数
admin\u url

if ( ! function_exists('base_url'))
{
    function base_url($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->base_url($uri);
    }
}
所以我想如果你像这样创建自己的代码

if ( ! function_exists('your_variable_name'))
{
    function your_variable_name($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->your_variable_name($uri);
    }
}
但是最好是扩展帮助程序而不是修改它,因此您可以在
application/helpers/MY_url\u helper.php中使用上面的代码
然后,您可以像通常使用base_url那样调用自定义变量
希望这有帮助我现在得到了答案

system/helpers/url\u helper.php
文件中添加以下行:

if ( ! function_exists('admin_css'))
{
    /**
     * Base URL
     *
     * Create a local URL based on your basepath.
     * Segments can be passed in as a string or an array, same as site_url
     * or a URL to a file can be passed in, e.g. to an image file.
     *
     * @param   string  $uri
     * @param   string  $protocol
     * @return  string
     */
    function admin_css($uri = '', $protocol = NULL)
    {
        return get_instance()->config->admin_css($uri, $protocol);
    }
}
并在
system/core/Config.php

$autoload['helper'] = array('url','global');
public function admin_css($uri = '', $protocol = NULL)
    {
        $base_url = base_url('assets/staff/css').'/';

        if (isset($protocol))
        {
            $base_url = $protocol.substr($base_url, strpos($base_url, '://'));
        }

        if (empty($uri))
        {
            return $base_url.$this->item('index_page');
        }

        $uri = $this->_uri_string($uri);

        if ($this->item('enable_query_strings') === FALSE)
        {
            $suffix = isset($this->config['url_suffix']) ? $this->config['url_suffix'] : '';

            if ($suffix !== '')
            {
                if (($offset = strpos($uri, '?')) !== FALSE)
                {
                    $uri = substr($uri, 0, $offset).$suffix.substr($uri, $offset);
                }
                else
                {
                    $uri .= $suffix;
                }
            }

            return $base_url.$this->slash_item('index_page').$uri;
        }
        elseif (strpos($uri, '?') === FALSE)
        {
            $uri = '?'.$uri;
        }

        return $base_url.$this->item('index_page').$uri;
    }
别忘了自动加载
url\u helper
。通过这种方式,您可以像这样使用
admin\u css
变量:

如果你使用这篇文章的其他答案,你不能使用like


谢谢大家。

这很简单

只需转到config.php,它位于/your_root/application/config目录

在该文件底部的这一行添加

$config["admin_url"] = "http://www.your_url.com/admin";
$config["assets_url"] = "http://www.your_url.com/assets";
要在应用程序中的任何位置检索它,请使用以下命令

$your_admin_variable =$this->config->item("admin_url");
$your_assets_variable =$this->config->item("assets_url");

你在做生意:)

是的,事实上我认为这不是完美的解决方案,但谢谢你的帮助:)你需要什么样的完美解决方案,你能解释一下Deniz B吗?事实上我在网上找到了一些信息,它们看起来更复杂,我很困惑;如果这样容易,为什么他们会选择复杂的方式呢?我曾经用过这种方法,但现在我怀疑,如果这不是最好的方法怎么办?@pr0metheus,你错过了;返回base_url()后。“/admin/”,我无法编辑,因为编辑应超过6个字符。你能修好吗?修好了。这是一个很好的解决方案。你应该毫无问题地使用它。很高兴它对你有用,但修改核心文件不是一个好主意,请始终尝试扩展它们。首先,欢迎使用堆栈溢出,其次,这是最好的答案