0

私はこれをコードイグナイターコントローラーに持っています:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Test extends CI_Controller {

    public $idioma;

    public function index() {

        parent::__construct();

            // get the browser language.
        $this->idioma = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));

        $data["idioma"] = $this->idioma;
        $this->load->view('inicio', $data);

    }

    public function hello(){
        $data["idioma"] = $this->idioma;
        $this->load->hello('inicio', $data);
    }
}

初期ビュー:

 <a href="test/hello">INICIO <?php echo $idioma ?></a>

こんにちはビュー:

Hello <?php echo $idioma ?>

inicio ビューはうまく機能しますが、hello ビューが読み込まれると何も表示されません。なぜこれが機能しないのですか?

4

1 に答える 1

3

クラス プロパティを自動的に設定する場合は、index() ではなくコンストラクタで行います。index() は、直接呼び出された場合、他のメソッドの前に実行されません。あなたの場合、test/helloとしてURLを介してhelloを呼び出していると思います

class Test extends CI_Controller {

    public $idioma;

    public function __construct(){
        parent::__construct();

            // get the browser language.
        $this->idioma = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
    }

    public function index() {

        $data["idioma"] = $this->idioma;
        $this->load->view('inicio', $data);

    }

    public function hello(){
        $data["idioma"] = $this->idioma;
        $this->load->hello('inicio', $data);
    }
}
于 2013-09-26T19:30:03.813 に答える