0

我想基于CodeIgniter 中的anchor()函数创建自己的名为anchor_admin()的函数。

我当时在想:

我在config.php文件中定义了管理路径,例如:

$config['base_url'] = '';
$config['base_url_admin']   = 'my-custom-admin-folder';

进而

我需要以某种方式创建一个扩展 anchor() 函数的新 anchor_admin() 函数。

所以不要输入:

<?php echo anchor('my-custom-admin-folder/gallery', 'Gallery', 'class="admin-link"'); ?>

我只会输入:

<?php echo anchor_admin('gallery', 'Gallery', 'class="admin-link"'); ?>

但输出总是:

<a href="http:/localhost/my-custom-admin-folder/gallery" class="admin-link">Gallery</a>

基本上我只需要在核心anchor()函数生成的url末尾添加配置变量$this->config->item('base_url_admin')。

怎么做?

我需要创建哪些文件以及放在哪里?

我想创建一个助手不是要走的路。

我应该创建一个库,还是可以将它作为一个函数放在我已经创建的应用程序核心文件夹中的 MY_Controller 文件中,并且我正在使用它来加载一些东西?

4

1 回答 1

2

在 CodeIgniter 中,您可以“扩展”助手(在这种情况下,“扩展”是一个包罗万象的术语,因为它们实际上不是类)。这允许您添加自己的辅助函数,这些函数将与标准函数一起加载(在您的情况下,是 URL 助手)。

此处的 CodeIgniter 文档对此进行了解释 - http://ellislab.com/codeigniter/user-guide/general/helpers.html

在您的情况下,您需要执行以下操作:

1-创建MY_url_helper.php文件application/helpers/

2-创建您的anchor_admin()功能如下:

function anchor_admin($uri = '', $title = '', $attributes = '') {

    // Get the admin folder from your config
    $CI =& get_instance();
    $admin_folder = $CI->config->item('base_url_admin');

    $title = (string) $title;

    if ( ! is_array($uri)) {

        // Add the admin folder on to the start of the uri string
        $site_url = site_url($admin_folder.'/'.$uri);

    } else {

        // Add the admin folder on to the start of the uri array

        array_unshift($uri, $admin_folder);

        $site_url = site_url($uri);

    }

    if ($title == '') {

    $title = $site_url;

    }

    if ($attributes != '') {

    $attributes = _parse_attributes($attributes);

    }

    return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';

}

3- 使用帮助器并按照您通常的方式运行:

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

echo anchor_admin('controller/method/param', 'This is an Admin link', array('id' => 'admin_link'));

希望有帮助!

于 2013-03-08T15:24:01.250 回答