2016-06-04 19 views
1

Ich habe einen Controller namens Stats, der verantwortlich ist, um einige Statistiken zu bekommen und sie in meiner Anwendung zu zeigen.Übergeben Sie Daten vom Controller zur Ansicht ohne Aufruf des Controllers in der URL CI

stats.php:

<?php 

class Stats Extends CI_Controller{ 

    public function index() 
    { 
    $this->load->model('Stats_model'); 
    $return['users'] = $this->Stats_model->get_users(); 
    $return['photos'] = $this->Stats_model->get_photos(); 
    $return['members'] = $this->Stats_model->get_members(); 
    $this->load->view('stats',$return); 
    } 
} 

In meiner Anwendung ich habe 3 Aufrufe insgesamt mit ihren Controllern. Home, Über, Kontakt - Home_controller, About_controller, Contact_controller.

Am Anfang einer dieser 3 Ansichten habe ich einen Abschnitt, den ich die Statistiken platzieren möchte. Die Statistiken werden also auf jeder Seite meiner Anwendung sichtbar sein.

Wie kann ich eine Ansicht (Statistiken) laden, um Daten von einem Controller (Stats) zu nehmen, ohne es aufzurufen? Wenn die Home-Ansicht dann den Home-Controller aufgerufen hat, NEIN die Statistik.

Ich möchte nicht eine separate Statistikseite aufrufen. Ich möchte, dass die Statistiken oben auf jeder Seite in meiner App angezeigt werden. Wie kann ich das in CI erreichen?

Dank

Antwort

0

Sie CI_Controller durch Hinzufügen MY_Controller im Verzeichnis ./application/core/ und bewegen Sie die Codes in Statistik-Controller in seinen Konstruktor wie anpassen: erstreckt

<?php 

class MY_Controller Extends CI_Controller 
{ 

    protected $_stat_view; 
    public function __construct() 
    { 
     $this->load->model('Stats_model'); 
     $return['users'] = $this->Stats_model->get_users(); 
     $return['photos'] = $this->Stats_model->get_photos(); 
     $return['members'] = $this->Stats_model->get_members(); 
     //specify true to view's third parameter will make it return 
     //view content instead of render and display it on browser 
     $this->_stat_view = $this->load->view('stats',$return, true); 
    } 
} 

und dann Startseite, Über, Kontakt Controller Notwendigkeit diese neue MY_Controller

<?php 
class Home_Controller extends MY_Controller 
{ 
    public function __construct() 
    { 
      parent::__construct(); 
    } 

    public function index() 
    { 
      $data[stats_section] = $this->_stat_view; 
      //In home view just echo $stat_section 
      $this->load->view('home', $data); 
    } 
} 

FYI du kannst Ändern Sie das Präfix MY_ in ./application/config/config.php, legen Sie den Namen des Präfixes, das Sie gerne konfigurieren Element $config['subclass_prefix'].

Verwandte Themen