如何将数据从模型传递到控制器(CodeIgniter,会话帮助)

问题描述 投票:0回答:3

首先抱歉我的英语(这不是我的主要语言)。

我是CodeIgniter3的新手,我喜欢它。

让我们说这是我的模型:

function login($uname, $upassword)
    {
        $this->db->where('uname', $uname);
        $this->db->where('upassword', $upassword);
        $query = $this->db->get('zamestnanci');

        foreach ($query->result() as $row) {
            $data['zamestnanec'] = $row->tpred_zamestnanci." ".$row->meno_zamestnanci. " ".$row->priezvisko_zamestnanci." ".$row->tza_zamestnanci;;
        }
        return ($data);

    }

这是我的控制器:

//Funkcia na prihlásenie používatela
    function loginUser()
    {
        //Načítať model
        $this->load->model('user_model');

        $uname              = $this->input->post('uname');
        $upassword          = $this->input->post('upassword');
        $meno               = $this->user_model->login($uname, $upassword);

        //Ak sa meno a heslo zhoduje
        if ($this->user_model->login($uname, $upassword)) 
        {

            $this->session->set_userdata('user', $meno);
            $data['user']   = $this->session->userdata('user');
            redirect('/otk/', $data);
        } 
        else 
        {
            redirect('/user/');
        }
    }

我想问你如何从模型传递/显示数据到会话。致$this->session->userdata('user')

你能解释一下将数据从模型传递到控制器以及从模型传递到会话的正确过程吗? (就像你试图向一个慢慢思考的人解释一样)。

我不希望链接到文档,只有一个或几个人可以在示例中解释它。

php codeigniter codeigniter-3
3个回答
0
投票

只需将模型传递给控制器​​,无论数据是否正确。在模型中不需要大循环

在模型中

function login($uname, $upassword)
{
    $this->db->where('uname', $uname);
    $this->db->where('upassword', $upassword);
    $query = $this->db->get('zamestnanci');

    $result = $query->result_array();
    $count = count($result); # get how many data passed

    if ($count == 1) {
        return $result;
    }
    else
    {
        return false;
    }
}

在控制器中

function loginUser()

    $this->load->model('user_model');

    $uname              = $this->input->post('uname');
    $upassword          = $this->input->post('upassword');
    //$meno               = $this->user_model->login($uname, $upassword);

    //Ak sa meno a heslo zhoduje
    $validate = $this->user_model->login($uname, $upassword);
    if ($validate != false) 
    {
        # Valid user
        # $validate conating user details too. to check add this next line print_r($validate);die;
        $this->session->set_userdata('user', $uname);
        redirect('/otk/');
    } 
    else 
    {
        # Invalid User
        redirect('/user/');
    }
}

And in otk function just call session value user


1
投票

您可以通过两种方式将信息从模型传递到控制器。

  • 通过使用会话
  • 首先使用查询获取信息并将该数组返回给控制器。

如果首先将数据返回到控制器,然后在控制器中使用返回的数组设置会话,则会很好。

如在这个例子中。

模型

function login($uname, $upassword)
{
    $this->db->select("*");
    $tthis->db->from("table_name")
    $this->db->where('uname', $uname);
    $this->db->where('upassword', $upassword);
    $query = $this->db->get('zamestnanci');
     // you can user result_array() to get all information in array form.
    $this->result = $query->result_array();
    return $this->result;

}

在控制器中

//Funkcia na prihlásenie používatela
function loginUser()
{
    //Načítať model
    $this->load->model('user_model');

    $uname              = $this->input->post('uname');
    $upassword          = $this->input->post('upassword');
    $meno               = $this->user_model->login($uname, $upassword);

    //Ak sa meno a heslo zhoduje
    if ($this->user_model->login($uname, $upassword)) 
    {

        $this->session->set_userdata('user', $meno); // here you are setting up the session.
        $data['user']   = $this->session->userdata('user');
        redirect('/otk/', $data);
    } 
    else 
    {
        redirect('/user/');
    }
}

1
投票

希望对你有帮助 :

从模型中获取您想要的所有用户信息(在数组中):

在控制器中:

第一种方式:

$uname              = $this->input->post('uname');
$upassword          = $this->input->post('upassword');
$lname              = $this->input->post('lname');//example

$session_arr['uname'] = $uname;
$session_arr['fullname'] = $fname.' '.$lname; // example
$this->session->set_userdata($session_arr);

第二种方式:

$user = $this->user_model->login($uname, $upassword);
if ($user != false) 
{
    // Valid user
    // $validate containing user details too. to check add this next line
    // print_r($validate);die;
    $this->session->set_userdata($user);
    redirect('/otk/');
} 

更多:https://codeigniter.com/user_guide/libraries/sessions.html#initializing-a-session

$user = array(
    'username'  => 'johndoe',
    'email'     => '[email protected]',
    'logged_in' => TRUE
);
$this->session->set_userdata($user);
© www.soinside.com 2019 - 2024. All rights reserved.