Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aufruf der Modellfunktion in der Ansicht coigniter

MVC oder nicht zu MVC

Das erste, was ich beachten sollte, ist, dass Es ist unmöglich, klassisches MVC in PHP zu schreiben . Tatsächlich implementieren die MVC-ähnlichen PHP-Frameworks wie CodeIgniter oder Yii eine Art MVP wobei:

  • view ist passiv und kennt das Modell nicht
  • Moderator (Controller) ändert Zustand des Modells, liest Informationen und gibt sie zur Ansicht weiter

Dank an tereško

CodeIgniter-Ansatz

Allerdings haben Sie insbesondere in CodeIgniter 3 Schritte:

  • Erstellen Sie ein Modell um die Datenbank abzufragen und die Daten (als Array oder Objekt) zurückzugeben
  • Erstellen Sie einen Controller zu laden und das Ergebnis abrufen aus dem Modell (eine Methode des Modells) und übergibt die zurückgegebenen Daten an die Ansicht
  • Erstellen Sie eine Ansicht und verwenden Sie PHP-Schleifen, um das Ergebnis wiederzugeben, erstellen Sie den HTML-Code.

Alle zusammenkommen

In Anbetracht des obigen Ansatzes müssen Sie das Ergebnis aus der Datenbank in Ihrem Modell abrufen:

application/models/product.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');
    }
}

Holen Sie dann das Ergebnis und übergeben Sie es innerhalb des Controllers:

application/controllers/products.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);
    }
}

Verwenden Sie schließlich die zurückgegebenen Daten in der Ansicht, um die Liste zu generieren:

application/views/product_view.php

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