Primero lo siento por mi inglés (no es mi idioma principal).

Soy nueva en CodeIgniter3 y me gusta.

Digamos que esta es mi modelo:

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);

    }

Y este es mi controlador:

//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/');
        }
    }

Quiero preguntarle cómo pasar / mostrar datos del modelo a la sesión. Para $this->session->userdata('user').

¿Puede explicarme el proceso correcto de pasar datos del modelo al controlador y del modelo a la sesión? (como si trataras de explicarle a un hombre que está pensando lentamente).

No quiero enlaces a la documentación, solo una o pocas personas que puedan explicarla a modo de ejemplo.

0
Nezo 28 feb. 2018 a las 12:06

3 respuestas

La mejor respuesta

Simplemente pase el modelo al controlador si los datos son correctos o no. no necesita un gran bucle en el modelo

En modelo

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;
    }
}

En el controlador

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/');
    }
}

Y en otk función solo llame al valor de la sesión user

0
Abdulla Nilam 28 feb. 2018 a las 09:17

Espero que esto te ayude:

Obtén toda la información del usuario (en matriz) del modelo, lo que quieras:

En el controlador:

Primera forma:

$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);

Segunda forma:

$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/');
} 

Para más información: 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);
1
Pradeep 28 feb. 2018 a las 09:52

Puede pasar información del modelo al controlador de dos maneras.

  • Mediante el uso de sesión
  • primero obtenga información utilizando la consulta y devuelva esa matriz al controlador.

es bueno si devuelve los datos al controlador primero y luego en el controlador configure la sesión utilizando esa matriz devuelta.

Como en este ejemplo.

Modelo

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;

}

En el controlador

//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
Usama Khalid 28 feb. 2018 a las 09:46