MVC ou pas vers MVC
La première chose que je dois noter est que Il est impossible d'écrire du MVC classique en PHP . En fait, les frameworks PHP de type MVC tels que CodeIgniter ou Yii implémentent une sorte de MVP dans lequel :
- la vue est passive et ignore le modèle
- le présentateur (contrôleur) change l'état du modèle, lit les informations et les transmet à la vue
Crédits à tereško
Approche CodeIgniter
Cependant, en particulier dans CodeIgniter, vous avez 3 étapes :
- Créer un modèle pour interroger la base de données et renvoyer les données (sous forme de tableau ou d'objet)
- Créer un contrôleur pour charger et récupérer le résultat du modèle (une méthode du modèle), et passez les données renvoyées à la vue
- Créer une vue et utilisez des boucles PHP pour faire écho au résultat, créez le HTML.
Se réunir tous
Compte tenu de l'approche ci-dessus, vous devez récupérer le résultat de la base de données dans votre modèle :
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');
}
}
Ensuite, récupérez et transmettez le résultat dans le contrôleur :
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);
}
}
Enfin, utilisez les données renvoyées dans la vue, pour générer la liste :
application/views/product_view.php
// Use $product to display the product.
print_r($product);