1

CodeIgniter を使用して Web アプリケーションを開発しています。

私もMVC構造に従ってすべての関数を実装しましたが、ここまで混乱したかどうかはわかりません...

ビューでモデルの関数を使用すると、MVC パターンに違反していますか? これはモデルと対話するビューと見なされますか?

いくつかのコードを示しましょう:

私のコントローラーからの1つ:

public function loader($page){
    #load pages if these settings will be loaded for sure
        if ( ! defined('BASEPATH')) exit('No direct script access allowed');

        $this->load->helper('url');
        $this->load->library('session');
        $this->load->model('app_model');
        $this->load->model('app_user_model');
        $this->load->view('app/header');
        $this->load->view($page);
        $this->load->view('app/footer');
    }

私のモデルからの1つ:

public function submit_login($username, $pass){
    //try to login, if the login credentials are correct, set the user session to username.

        $this->db->select("name, PersonName");
        $this->db->where("name", $username);
        $this->db->where("pass", $pass);
        $result = $this->db->get("members");


        if ($result->num_rows() > 0){
            foreach($result->result() as $user){
                $this->session->set_userdata('user_name', $user->PersonName);
                $this->session->set_userdata('user', $user->name);
            }
            return 1;
        }return 0;
    }

部分的なビュー:

$is_login = $this->app_user_model->is_loggedin();

if($is_login){
    //if user is logged in, prompt to log out
    echo "Welcome back ".$this->session->userdata['user_name'].".";
    echo anchor(base_url('profile/logout'), "logout" );
    echo "<br/>";
}else{

    echo validation_errors();
    //if user is not logged in, ask to log in first
    echo form_open('profile/login');

    $user_name = array(
                'maxlength'   => '25',
                'size'        => '55',
                'style'       => 'width:30%; margin-left:5%',
                'name'        => 'username',
                );

    //get the date 
    echo "<div class='user_name_input'>";
    echo "Username(email)";
    echo form_input($user_name, '', 'class="user_name"');
    echo "</div>";

この場合、user_model から is_loggedin() を呼び出しました。

MVC パターンに正しく従っていますか?

助けてくれてありがとう。

4

1 に答える 1

3

批判的ではないように導かれましたが、MVCの要点を見逃していると思います.

URL は関連するコントローラーを呼び出し、コントローラーはモデル レイヤーを呼び出してデータを取得し、ビューを決定してから、正しいビューを呼び出します。

したがって、あなたのケースでは、モデルを呼び出してログインをチェックするログインコントローラーを呼び出し、そこからログアウトボタンまたはエラーを表示します。

思い通りの使い方ができると思いますが、私の意見では、それは間違った使い方です。

于 2013-04-24T13:56:29.690 に答える