Cadrul CodeIgniter MVC (model View Controller) cu exemplu

Ce este MVC?

Standarde MVC pentru Model-View-Control. Este un model arhitectural care împarte aplicația în trei componente majore.

1. Modelul se ocupă de logica afacerii și interacțiunile cu bazele de date

2. Controllerul coordonează activitățile dintre model și vedere

3. View este responsabil pentru prezentarea datelor

Următoarele sunt câteva dintre avantajele modelului arhitectural MVC

  • Cuplaj liber - componentele există și funcționează independent unele de altele.
  • Flexibilitate – se pot face cu ușurință modificări ale componentelor individuale
  • Productivitate crescută – mai mult de o persoană poate lucra la proiect în același timp. Dezvoltatorii front-end pot lucra la vizualizări și prezentări, în timp ce dezvoltatorii de backend se pot concentra pe modele și, deoarece sistemul este cuplat liber, funcționează la sfârșitul zilei.

Modele Usi

Modelul este responsabil pentru interacțiunea cu sursele de date. Aceasta este de obicei o bază de date, dar poate fi și un serviciu care furnizează datele solicitate. De asemenea, este o practică obișnuită să aveți logica de afaceri conținută în modele, spre deosebire de controler. Această practică este de obicei numită controler slab model gras.

Modelul scrie de obicei date în baza de date, oferă un mecanism de editare și actualizare și ștergere a datelor. Într-o aplicație web modernă, modelele folosesc modele de design de acces la date, cum ar fi înregistrarea activă, pentru a facilita interacțiunea cu baza de date.

De exemplu, CodeIgniter folosește o bibliotecă încorporată Active Record pentru a ajuta modelele, în timp ce alte cadre precum Laravel utilizează Eloquent Object Relational Mapper (ORM) care ajută la accesul la date.

operator de date cu caracter personal,

Controlorul ascultă cererile de resurse primite de la utilizatori. Acționează ca intermediar între model și vedere și, uneori, implementează și unele reguli de afaceri. Să presupunem că controlorul primește o solicitare de înregistrare a unui utilizator în baza de date.

Operatorul poate efectua validarea datelor pe ceea ce a fost transmis pentru a se asigura că toți parametrii necesari au fost transmisi. Dacă ceva lipsește, utilizatorul este redirecționat către pagina de înregistrare cu mesajul de eroare corespunzător afișat. De asemenea, controlorul poate solicita modelului să efectueze mai multe validari verificând dacă adresa de e-mail trimisă există deja. Dacă toate regulile de validare trec, atunci controlorul trimite datele modelului pentru proces și așteaptă răspunsul.

Odată ce modelul a procesat informațiile și a returnat un răspuns pozitiv, controlerul încarcă vizualizarea corespunzătoare și transmite datele returnate de model ca parametru.

Vizualizare

Vizualizarea tratează datele prezentate utilizatorului final. În aplicațiile web, vizualizările conțin adesea HTML, CSS și opțional JavaScenariu. Vizualizările conțin cod minim de programare. Codul conținut în vizualizări este de obicei folosit pentru a parcurge colecțiile de date primite ca parametri de la modelul sau funcția de ajutor pentru curățarea datelor sau crearea de link-uri pentru editarea înregistrărilor. Majoritatea aplicațiilor web moderne utilizează de obicei motoare de șabloane care își definesc propria sintaxă, care este mai mult ca pseudocod și poate fi ușor de înțeles de către designeri. Când lucrați cu CodeIgniter, este o practică obișnuită să folosiți etichete PHP scurte și structuri de control. Pentru a afișa ceva în CodeIgniter, s-ar putea folosi următorul cod

<?=$title?>

Spre deosebire de

<?php
echo $title;
?>

Structurile de control sunt de obicei scrise după cum urmează

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

După cum puteți vedea din exemplul de mai sus, vizualizarea va folosi o combinație de PHP și HTML în loc să includă totul în cod PHP pur.

Cum funcționează cadrele MVC?

Următoarea imagine arată funcționarea cadrului MVC

Cadrele MVC funcționează

Un controler primește cererea de la utilizator, interacționează cu modelul bazei de date dacă este necesar, apoi returnează rezultatul înapoi în browser sub formă de cod HTML pe care browser-ul l-a interpretat într-un format care poate fi citit de om și afișat utilizatorului.

Controler CodeIgniter

Să detaliem acum ce sa întâmplat când am încărcat adresa URL de mai sus în browserul web.

Deschideți fișierul Welcome.php controller localizat aplicație/controlere

Ar trebui să puteți vedea următorul cod

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

AICI,

  • defined('BASEPATH') SAU exit('Nu este permis accesul direct la script'); împiedică accesul direct la controler dacă cererea nu a venit prin index.php. asta din motive de securitate.
  • clasa Welcome extinde CI_Controller {…} definește clasa controler Welcome și extinde clasa părinte CI_Controller
  • funcția publică index(){…} definește metoda indexului care răspunde la adresa URL http://localhost:3000
    • $this->load->view('welcome_message'); încarcă vizualizarea mesaj de întâmpinare care se află în directorul application/views

Acum vom actualiza metoda indexului după cum urmează

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

AICI,

  • $this->load->model('modelul_clientilor'); încarcă modelul clienților.
  • $date['client'] = $this->customers_model->get_customer(3); apelează metoda get_customer a customers_model și trece în parametrul 3. În acest exemplu am codificat greu valoarea, dar în aplicațiile din viața reală acesta ar fi un parametru din URI.
  • $this->load->view('welcome_message',$date); încarcă vizualizarea welcome_message și trece variabila $data în vizualizare

Modelul CodeIgniter

Să creăm acum vizualizarea la care am făcut referire în codul de mai sus. Pentru simplitate, modelul nostru nu va interacționa cu Baza de date dar va returna o înregistrare statică a clientului. Vom lucra cu baze de date în tutorialele următoare.

Creați un fișier Customers_model.php în aplicație/modele

Adăugați următorul cod

<?php
class Customers_model extends CI_Model {
public function get_customer($id) {
$data['id'] = 3;
$data['first_name'] = 'John';
$data['last_name'] = 'Doe';
$data['address'] = 'Kingstone';
return $data;
}
}

AICI,

  • clasa Customers_model extinde CI_Model {…} definește modelul Customers_model care extinde CI_Model.
  • funcția public get_customer($id) {…} definește metoda get customer bazată pe un ID de client
  • $data[…] definește valorile statice ale clientului nostru fictiv. Acesta ar trebui să fie un rând returnat din baza de date.
  • returnează $date; returnează datele clientului.

Adică pentru modelul nostru. Să modificăm acum vizualizarea welcome_message

Deschide welcome_message.php situat în

application/views/welcome_message.php

Înlocuiți codul cu următorul

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CodeIgniter MVC Basics</title>
</head>
<body>
<h1>Customer Details Card</h1>
<p>Customer ID : <strong><?=$customer['id']?></strong></p>
<p>First Name  : <strong><?=$customer['first_name']?></strong></p>
<p>Last Name   : <strong><?=$customer['last_name']?></strong></p>
<p>Address     : <strong><?=$customer['address']?></strong></p>
</body>
</html>

Salvați modificările

Încărcați următoarea adresă URL în browserul web

http://localhost:3000/

Ar trebui să puteți vedea cardul de client așa cum se arată în imaginea de mai jos

Modelul CodeIgniter

Rezumat

  • MVC este un model arhitectural care împarte aplicația în trei componente majore
  • Modelul este responsabil pentru interacțiunea cu sursele de date
  • Controlorul ascultă cererile de resurse primite de la utilizatori
  • În aplicațiile web, vizualizările conțin adesea HTML, CSS și opțional JavaScenariu
  • Un controler primește cererea de la utilizator, interacționează cu modelul bazei de date dacă este necesar, apoi returnează rezultatul înapoi în browser sub formă de cod HTML

Rezumați această postare cu: