2017-04-06 1 views
0

Je reçois la variable non définie chaque fois que je charge le contrôleur.Variable indéfinie dans le modèle

Voici la fonction d'index du contrôleur qui est appelée (4ème ligne) et la même erreur dans toutes les autres occurrences.

<?php 

class Students extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('Student_model'); 
} 

public function index() { 
    $data['view_name'] = 'students/dashboard'; 
    $this->load->view('templates/template_student' , $data); 
} 

} 

Et la partie du modèle où l'erreur provient de Ceci est une partie du code à partir du modèle de template_student

<ul class="nav navbar-nav navbar-right"> 
<li class=""> 
<a href="javascript:;" class="user-profile dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> 
<?php if ($student->passport_photo == '') { ?> 
<img src="<?php echo base_url(); ?>assets/images/sample.jpg" alt=""> 
<?php } else { ?> 
<img src="<?php echo base_url(); ?><?php echo $student->passport_photo; ?>" alt=""> 
<?php } ?> 
<?php if ($this->session->userdata('logged_in')) : ?> 
<?php echo $this->session->userdata('first_name') . " " . $this->session->userdata('last_name'); ?> 
<?php endif; ?> 
<span class=" fa fa-angle-down"></span> 
</a> 
<ul class="dropdown-menu dropdown-usermenu pull-right"> 
<li><a href="<?php echo base_url(); ?>students/profile"> Profile</a> 
</li> 
<li><a href="<?php echo base_url(); ?>students/logout"><i class="fa fa-sign-out pull-right"></i> Log Out</a> 
</li> 
</ul> 
</li> 
</ul> 

Qu'est-ce que je fait de mal?

+0

Quelles données transmettez-vous à votre affichage? –

+0

L'erreur est avec la variable $ student dans la quatrième ligne –

+0

Je n'ai pas inclus la fonction d'index la première fois, désolé pour cela. –

Répondre

0

Vous avez chargé un modèle appelé Student dans votre contrôleur et, dans votre modèle, vous accédez à une variable $ student. C'est 2 choses différentes.

Vous devriez faire quelque chose comme ceci:

class Students extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('Student_model', 'student'); 
    } 

    public function index() 
    { 
     $student = ... // retrieve the student from db 
     $data['student'] = $student; // define the variable to be sent to the view 
     $this->load->view('templates/template_student' , $data); 
    } 
} 
+0

Merci, je l'apprécie vraiment. Un de mes amis m'a donné son code, mais je ne savais rien à propos de codeigniter.I a ensuite passé par quelques tutoriels et votre explication ont vraiment fait les choses claires pour moi. –

0

Les changements dans le contrôleur

<?php 

class Students extends CI_Controller { 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->model('Student_model'); 
} 

public function index() { 
    $data = array(); 
    $data['view_name'] = 'students/dashboard'; 
    $data['student'] = $this->student_model->get_all(); 
    $this->load->view('templates/template_student' , $data); 
} 

} 

Ensuite, vous devez ajouter une fonction get_all() dans votre classe Student_model comme suit

function get_all() 
     {   
      $this->db->from($this->table); 

      $query=$this->db->get(); 
      if($query->num_rows()>0){ 
        return $query->result_array(); 
       } 
       else{ 
        return array(); 
       } 
     } 

ici $this->table devrait être le nom de la table des étudiants

Maintenant, je l'espère, vous pouvez vérifier la valeur passport_photo est existe ou non dans votre point de vue quelque chose de similaire à

<?php if($student[0]['passport_photo'] == ''){ 
    . 
    . 
    . 

    } ?> 

J'espère que cette mai aide you..thanks!

+0

Il a travaillé mate. Vous avez même fait mon code mieux, .thanks..cheers! –