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 に答える