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

时间:2018-02-28 09:06:09

标签: php codeigniter codeigniter-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')

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

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

3 个答案:

答案 0 :(得分: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 :(得分: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'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);
$this->session->set_userdata($user);

答案 2 :(得分: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