Mysql
 sql >> Database >  >> RDS >> Mysql

Chiamare la funzione del modello nella vista codeigniter

MVC o meno in MVC

La prima cosa che dovrei notare è che È impossibile scrivere MVC classico in PHP . In effetti, i framework PHP simili a MVC come CodeIgniter o Yii implementano una specie di MVP in cui:

  • la vista è passiva e inconsapevole del modello
  • il presentatore (controller) cambia lo stato del modello, legge le informazioni e le passa alla visualizzazione

Crediti a tereško

Approccio CodeIgniter

Tuttavia, in particolare in CodeIgniter, hai 3 passaggi:

  • Crea un Modello per interrogare il database e restituire i dati (come array o oggetto)
  • Crea un controllore per caricare e recupera il risultato dal Modello (un metodo del Modello) e passare i dati restituiti alla vista
  • Crea una Vista e usa i loop PHP per fare eco al risultato, costruisci l'HTML.

Ritrovarsi tutti insieme

Considerando l'approccio di cui sopra, devi recuperare il risultato dal database nel tuo modello:

applicazione/modelli/prodotto.php

class Product extends CI_Model
{
    public function get_product($product_id)
    {
        $this->db->select('*')->from('products');
        $this->db->where('product_id', $product_id);
        $this->db->join('versions', 'versions.product_id = products.product_id');
        $query=$this->db->get();
        return $query->first_row('array');
    }
}

Quindi recupera e passa il risultato all'interno del Controller:

applicazione/controller/prodotti.php

class Products extends CI_Controller
{
    public function view($product_id)
    {
        $this->load->model('product');
        // Fetch the result from the database
        $data['product'] = $this->product->get_product($product_id);
        // Pass the result to the view
        $this->load->view('product_view', $data);
    }
}

Infine, utilizza i dati restituiti nella vista, per generare l'elenco:

applicazione/viste/product_view.php

// Use $product to display the product.
print_r($product);