0

codeigniter HMVC アーキテクチャを使用してアプリケーションを開発しています。私は HMVC を初めて使用し、調査を始めたばかりです。最近、codeigniter でコードを MVC から HMVC に変換し始めました。application/libraries フォルダーにあるカスタム認証ライブラリーを開発しました。このライブラリーには、登録とログイン フォームの認証ルールがあります。検証でいくつかのコールバック関数を作成しましたが、HMVC フレームワークを選択したときに突然機能しなくなりました。これを修正するための参照に出くわしましたが、すべて無駄でした。どういうわけかコードを機能させることができませんでした。一般的な提案によると、私は以下のように MY_Form_validation を作成しました:

class MY_Form_validation extends CI_Form_validation
{
    public $CI;
}

そして、認証ライブラリでこれを使用しています:

                $this->CI = & get_instance();
                $this->CI->load->library('form_validation');
                $this->CI->form_validation->CI = $this->CI;

そして検証のために私はこれを使用します:

if($this->CI->form_validation->run($this->CI)==FALSE)

しかし、どういうわけか私の検証チェックは実行されていません。以前は私の MVC フレームワークで動作していました。

4

1 に答える 1

0

「$this->CI->form_validation->CI = $this->CI;」なぜ多くの相互参照を行うのですか?

これが、拡張されたフォーム検証ライブラリを持っている方法であり、機能しています。

class MY_Form_validation extends CI_Form_validation {
    public function valid_url($url) {
        $pattern = '/^http(s)?:\/\/[a-z0-9]{1}[0-9a-zA-Z\-]*([\.a-zA-Z])+([a-zA-Z0-9\-\/\?=])*$/';
        if (preg_match($pattern, $url)) {
            return true;
        } else {
            $this->set_message('valid_url', "%s is not a valid url.");
            return false;
        }
    }
}

次に、フォーム検証ライブラリを使用するのと同じように使用できます。

于 2012-07-15T07:53:41.800 に答える