De débutant à avancé OpenCart plus d'informations sur MVC

Auparavant, nous avions examiné l'architecture Model-View-Controller - ou MVC - d'OpenCart. À cet égard, nous avons créé notre premier "Hello World!" Manette. Donc, dans le dernier article précédent, je viens de parler de quelques notions de base de Controller. 

J'espère que vous vous êtes entraîné à la création d'un contrôleur, car nous en sommes maintenant à la discussion sur les contrôleurs au niveau avancé, mais avant de commencer la discussion, obtenons un aperçu de ce que nous allons discuter dans cet article..

  1. Écrire un contrôleur du monde réel
  2. Chargement des langues
  3. Chargement et utilisation de bibliothèques
  4. Aide-mémoire sur les bibliothèques
  5. Créer une vue
  6. Créer un modèle
  7. Manipulation du modèle avec un contrôleur
  8. Conclusion

Écrire un contrôleur du monde réel

Nous allons créer un formulaire utilisateur simple suivant OpenCart MVC Framework. Pour cela, nous devons d'abord créer un contrôleur. Comme j'ai créé un répertoire formes à l'intérieur de catalogue / contrôleur

Remarque: Utilisateurs de Mac et Linux, n'oubliez pas de modifier l'autorisation de votre répertoire en 775..

À l'intérieur de formes répertoire, j'ai créé un fichier myform.php . Maintenant commençons à écrire le code.

document-> settitle ('My Form'); // Pour définir le titre de la page $ this-> data ['breadcrumbs'] = array (); // Initialise un tableau de Breadcurmbs $ route = $ this-> request-> get ['route']; // Obtenir l'URL "route" en utilisant la méthode GET // Making of Breadcrumb se référant à home $ this-> data ['breadcrumbs'] [] = array ('text' => 'Home', 'href' => $ this -> url-> link ('common / home'), // chemin de chemin d'accès au domicile 'separator' => false); // Making of Breadcrumb se référant à la page en cours $ this-> data ['breadcrumbs'] [] = array ('text' => 'Mon formulaire', 'href' => $ this-> url-> link ($ route ), // chemin de la route vers l'URL actuelle 'separator' => '|' // Symbole séparateur de chapelure)); // End Breadcrumbs $ this-> data ['form_heading'] = 'Mon en-tête de formulaire'; // Utilisez le mot-clé $ this-> data pour analyser les données du contrôleur afin d'afficher $ this-> data ['first_value'] = 'Prénom:'; $ this-> data ['second_value'] = 'Nom de famille:'; $ this-> data ['third_value'] = 'Numéro de passeport:'; $ this-> data ['ahead_value'] = 'N ° de téléphone:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Lier les données pour continuer bouton $ this-> data ['button_continue'] = 'Continuer'; // données texte pour la page de continuation // Ajout d'enfants des pages, à savoir, en-tête, pied de page et colonnes $ this-> children = array ('common / column_left', 'common / column_right', 'common / content_top', 'common / content_bottom ',' common / footer ',' common / header '); $ this-> template = 'default / template / forms / myform.tpl'; // Reportez-vous au fichier modèle / vue pour l'interface utilisateur $ this-> response-> setoutput ($ this-> render ()); // Rendre le modèle en sortie??>

Examinez le code encore et encore et essayez de créer un contrôleur comme celui-ci.. 

Chargement des langues

OpenCart permet une manipulation facile et joue avec les langues. Ainsi, dans l'exemple ci-dessus, les textes de langue codés en dur ont été utilisés. Mais il est recommandé d'utiliser la manipulation de texte.

Pour charger une langue, utilisez $ this-> language-> load (chemin de la langue); & pour obtenir les données linguistiques spécifiques, utilisez cette syntaxe $ this-> language-> get (mot-clé de données du fichier de langue); . 

Notez qu'il est fortement recommandé de créer un fichier de langue de chaque contrôleur et de chaque page. Le chemin de la route linguistique doit également être identique à celui du contrôleur.

 Chargement et utilisation de bibliothèques

Deux bibliothèques précodées sont disponibles pour la facilité du développeur. Les bibliothèques peuvent être situées dans / system / library . Les bibliothèques peuvent être directement chargées dans Controller en utilisant la syntaxe suivante: $ this-> nom_bibliothèque-> nom_méthode ()

Auparavant, nous avons étudié quelques bibliothèques afin que vous puissiez les manipuler avec votre code. Certains aide-mémoire est disponible comme suit:

Bibliothèque panier

$ this-> cart-> getProducts (); // Obtenir tous les produits disponibles dans le panier $ this-> cart-> add ($ product_id, $ qty = 1, $ options = array ()); // Ajouter un produit au panier $ this-> cart-> remove ($ key); // Supprime le produit du panier $ this-> cart-> clear (); // vide le panier $ this-> cart-> getWeight (); // Retourne la somme des poids de tous les produits $ this-> cart-> getSubTotal (); // Retourne le sous-total de tous les produits $ this-> cart-> getTotal (); // Retourne le total du panier $ this-> cart-> countProducts (); // Retourne le nombre de produits disponibles dans le panier $ this-> cart-> hasProducts (); // Retourne vrai si au moins un article est disponible dans le panier $ this-> cart-> hasStock (); // Retourne false si au moins 1 produit est en rupture de stock dans le panier

Bibliothèque de configuration

$ this-> config-> get (clé $); // Retourne les paramètres par nom de clé en fonction de l'application (catalogue ou admin) $ this-> config-> set ($ key, $ value); // Définit et remplace la valeur du paramètre. (Ne l'enregistrez pas dans la base de données) CURRENCY $ this-> currency-> set ($ currency); // Définit et remplace le code de devise par défaut utilisé dans la session $ this-> currency-> format ($ number, $ currency = ", $ value =", $ format = TRUE); // Formate la devise $ this-> currency-> convert ($ value, $ from, $ to); // Convertit la valeur de la devise dans une autre devise $ this-> currency-> getId (); // Obtient l'identifiant de la devise actuelle $ this-> currency-> getCode (); // Retourne le code de devise de la devise actuelle $ this-> currency-> getValue ($ currency); // Retourne le taux de change de la devise fournie $ this-> devise-> a (devise); // Retourne true si disponible dans la liste des devises

Bibliothèque client

$ this-> client-> login ($ email, $ mot de passe); // enregistre le client $ this-> customer-> logout (); // déconnecte le client $ this-> customer-> isLogged (); // Renvoie true si l'utilisateur est connecté int $ this-> customer-> getId (); // Retourne l'ID de l'utilisateur actuellement connecté $ this-> customer-> getFirstName () // Retourne le prénom de l'utilisateur connecté $ this-> customer-> getLastName () // renvoie le dernier nom de l'utilisateur connecté $ this-> client-> getEmail (); // Renvoie le courrier électronique de l'utilisateur connecté $ this-> customer-> getTelephone (); // retourne l'utilisateur actif Telephone $ this-> customer-> getFax (); // Renvoie le numéro de fax de l'utilisateur actif $ this-> customer-> getNewsletter (); // Retourne le statut de la lettre $ this-> customer-> getCustomerGroupId (); // retourne l'id du groupe de clients actifs

Bibliothèque de base de données

$ this-> db-> query ($ sql) // Exécute la requête MySQL et renvoie le nombre de lignes $ this-> db-> escape ($ value); // Nettoie la valeur et la sécurise pour la base de données $ this-> db-> getLastId ($ sql); // retourne le dernier identifiant inséré à partir d'une requête plus récente

Bibliothèque de documents

$ this-> document-> setTitle ($ title); // Définit le titre de la page $ this-> document-> getTitle (); // Obtient le titre de la page $ this-> document-> setDescription ($ description); // Définit la page Description $ this-> document-> getDescription (); // Obtient la description de la page $ this-> document-> setKeywords (); // Définit les mots-clés de la page $ this-> document-> getKeywords (); // Obtient les mots-clés de la page $ this-> document-> addStyle ($ href, $ rel = 'feuille de style', $ media = 'screen'); // Ajouter une feuille de style au document $ this-> document-> getStyles (); // Obtient les styles de page $ this-> document-> addScript ($ script); // Ajoute un script à la page $ this-> document-> getScripts (); // Obtient des scripts de page

Créer une vue

Dans OpenCart, il y a toujours des modèles qui sont utilisés pour les vues pour afficher la sortie. Dans le contrôleur ci-dessus, nous avons spécifié l'emplacement du fichier de vue sur theme / default / template / forms / myform.tpl.

Maintenant, créez un fichier avec ce nom et placez le code ci-dessous:

 
">

Créer un modèle

Un modèle contient l'interaction avec la base de données et ses objets. Donc, avant de travailler sur un modèle, allez dans phpMyAdmin, sélectionnez la base de données de votre magasin (i.e., stocké) et l'exécuter dans SQL Panel

CREATE TABLE 'oc_myforms' ('id' int (11) NON NULL AUTO_INCREMENT, 'première_valeur' ​​varchar (80) DEFAULT NULL, 'second_value' varchar (80) DEFAULT NULL, 'third_value' varchar (80) DEFAUT NULL, 'second_value' varchar (80) varchar (80) DEFAULT NULL, date_added 'date-heure DEFAULT' 0000-00-00 00:00:00 ', PRIMARY KEY (' id ')) ENGINE = InnoDB DEFAULT CHARSET = latin1 

"oc" est un préfixe de table, utilisez votre propre préfixe Store DB.

 Maintenant, il est temps de créer votre propre modèle. L'objectif derrière la création d'un modèle est d'enregistrer les données de formulaire dans la base de données. alors laisse créer notre premier modèle.

Créer un nouveau fichier myforms.php dans catalogue / modèle / formulaires /et placez le code comme ci-dessous:

db-> query ("INSERT INTO". DB_PREFIX. "myforms SET. $ this-> db-> escape ($ data_array [" first_value ']). "', second_value = '". $ this-> db-> escape ($ data_array ['second_value']). "', third_value ='". $ this-> db-> escape ($ data_array ['third_value']). "', forward_value ='". $ this-> db- > escape ($ data_array ['ahead_value']). "', date_added = NOW ()"); $ form_id = $ this-> db-> getLastId (); // Retourne le dernier identifiant inséré return $ form_id; ?>

Manipulation de modèle avec contrôleur

Donc, notre code de contrôleur final ressemblera à ceci:

request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> load-> model ('forms / myform'); // chemin de route sans .php $ form_id = $ this-> model_forms_myform-> saveData ($ this-> request-> post); // Analyse toutes les données publiées if ($ form_id) $ this-> redirect ($ this-> url-> link ('forms / myform')); // Recharge le formulaire à nouveau $ this-> document-> settitle ('Mon formulaire'); // Pour définir le titre de la page $ this-> data ['breadcrumbs'] = array (); // Initialise un tableau de Breadcurmbs $ route = $ this-> request-> get ['route']; // Obtenir l'URL "route" en utilisant la méthode GET // Making of Breadcrumb se référant à home $ this-> data ['breadcrumbs'] [] = array ('text' => 'Home', 'href' => $ this -> url-> link ('common / home'), // chemin de chemin d'accès au domicile 'separator' => false); // Making of Breadcrumb se référant à la page en cours $ this-> data ['breadcrumbs'] [] = array ('text' => 'Mon formulaire', 'href' => $ this-> url-> link ($ route ), // chemin de la route vers l'URL actuelle 'separator' => '|' // Symbole séparateur de chapelure)); // End Breadcrumbs $ this-> data ['form_heading'] = 'Mon en-tête de formulaire'; // Utilisez le mot-clé $ this-> data pour analyser les données du contrôleur afin d'afficher $ this-> data ['first_value'] = 'Prénom:'; $ this-> data ['second_value'] = 'Nom de famille:'; $ this-> data ['third_value'] = 'Numéro de passeport:'; $ this-> data ['ahead_value'] = 'N ° de téléphone:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Lier les données pour continuer bouton $ this-> data ['button_continue'] = 'Continuer'; // données texte pour la page de continuation // Ajout d'enfants des pages, à savoir, en-tête, pied de page et colonnes $ this-> children = array ('common / column_left', 'common / column_right', 'common / content_top', 'common / content_bottom ',' common / footer ',' common / header '); $ this-> template = 'default / template / forms / myform.tpl'; // Reportez-vous au fichier modèle / vue pour l'interface utilisateur $ this-> response-> setoutput ($ this-> render ()); // Rendre le modèle en sortie??>

Donc, la condition vérifiera s'il y a des données provenant de la méthode POST, si oui, l'entrée de la base de données se produira.

Notez que vous pouvez ajouter vos validations et contrôles pour valider les données POST..

Conclusion

Bingo! Nous avons codé une application réelle Model-View-Controller dans OpenCart. Vous pouvez explorer plus de choses et plonger dans la mer de MVC; cependant, il s’agissait d’une introduction de base au modèle MVC et nous avons atteint notre objectif.

Dans nos prochains articles, nous aborderons la création de modules et de bibliothèques d’OpenCart. Veuillez fournir vos commentaires précédents sur l'article dans le fil de commentaires ci-dessous..