2

「auth」というモジュール (tank_auth 認証ライブラリを含む) の構成ファイルのパスに問題があります。

「auth」モジュールのすべての関数は、「tank_auth.php」ライブラリをロードします。これは、次の場所に tank_auth 構成ファイルをロードしますapplication/modules/auth/config/tank_auth.php

function __construct()
{
    $this->ci =& get_instance();

    $this->ci->load->config('tank_auth', TRUE); //<--- HERE IT IS!!

    $this->ci->load->library('session');
    $this->ci->load->database();
    $this->ci->load->model('tank_auth/users');

    // Try to autologin
    $this->autologin();
}

別のモジュールでは、「auth」モジュール内のビューに関数への次の呼び出しを挿入します。

<?php modules::run('auth/cp');  ?>

これによりエラーが発生します

An Error Was Encountered
The configuration file tank_auth.php does not exist.

これを解決するには、Tank_auth.php の __construct 関数内で、'tank_auth' から 'auth/tank_auth' へのパスを変更します。

function __construct()
{
    $this->ci =& get_instance();

    $this->ci->load->config('auth/tank_auth', TRUE); // <--- ADDED module name

    $this->ci->load->library('session');
    $this->ci->load->database();
    $this->ci->load->model('tank_auth/users');

    // Try to autologin
    $this->autologin();
}

私の質問は、別のモジュールから呼び出されている認証関数 cp が「認証」モジュール内の構成ファイルを認識しないのはなぜですか? config('tank_auth', TRUE)モジュールの名前を追加せずにそのまま使用できるべきではありませんか?

4

1 に答える 1

1

それがHMVCモジュールの設計方法です。

$this->ci->load->config('tank_auth', TRUE);

これは、デフォルトの構成フォルダーでのみ検索します。コントローラーのコンテキストで言及されている公式の CI HMVCページの「機能」セクションを参照してください。

于 2011-06-23T15:06:00.723 に答える