1

こんにちは、サイトのすべてのページにログインフォームを表示しようとしていますが、メソッドを持つコントローラーを使用していない他のページで「未定義のユーザー名とパスワード」エラーが発生し続けるため、これを行うのに苦労しています「ログイン()」で。

他のコントローラーを拡張するマスターコントローラー (MY_Controller) を使用しました。

MY_Controller ファイル:

class MY_Controller extends CI_Controller {

    public $template;
    public $template2;

    public function __construct() {
        parent::__construct();
        $this->template = 'templates/default'; // Set default layout
        $this->template2 = 'templates/other';
    }
}

ユーザーコントローラー - ログイン部分:

class Users extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('form'); // Load the form helper to allow the use of forms.
    }

    /* Other register function is here*/

    public function login(){
        $data['page'] = 'login';

        $data['username'] = array(
            'name' => 'username',
            'placeholder' => 'Enter username'
        );
        $data['password'] = array(
            'name' => 'password',
            'type' => 'password',
            'placeholder' => 'Enter password'
        );

        $this->load->view($this->template, $data);
  }

デフォルト テンプレート ファイルの一部:

    <div id="container">

        <div id="contentArea">
            <h2 class="pageTitle"><?php echo isset($title) && strlen($title) > 1 ? $title : 'Unknown Title'; ?></h2>
            <?php $this->load->view($page); ?>
        </div>
        <div id="aside">
            <h3>Login</h3>
            <?php $this->load->view('login'); ?>
        </div>
    </div>

この問題を解決する方法について誰かがアイデアを持っている場合は、お知らせください。事前に感謝します。

4

1 に答える 1

0

この問題を解決する方法はたくさんあります。個人的には、自動ロードされたカスタムヘルパーを作成し、そこからほとんどのビューを実行します。

だから代わりに$this->load->view($this->template, $data);

走るload_index('login', $data)

helpers/general_helper.php

function load_index($content, $data = array()) {

    $CI =& get_instance();

    $data += array('page'     => $content,
                   'username' => array('username' => 'username',
                                       'placeholder' => 'Enter username'),
                   'password' => array('name' => 'password',
                                       'type' => 'password',
                                       'placeholder' => 'Enter password'));

    $CI->load->view($CI->template, $data);

}

CodeIgniter は何千もの選択肢を提供します。よく考えて、好きな方を選んでください。

于 2012-06-26T07:19:48.237 に答える