Comment programmer avec Yii2 Mise en route

Ce que vous allez créer

Si vous demandez, "c'est quoi Yii?" Consultez mon précédent tutoriel: Introduction au framework Yii, qui passe en revue les avantages de Yii et comprend un aperçu des nouveautés de Yii 2.0, publiées le 12 octobre 2014.. 

Ce tutoriel vous guidera à travers l’installation de Yii 2.0, la configuration de votre environnement de développement local, la construction d’une application simple Hello World, la configuration de votre environnement de production distant pour l’hébergement et le déploiement de votre code à partir d’un référentiel GitHub..

Installation de Yii 2.0

Documentation

Vous pouvez trouver des instructions d'installation détaillées ici; Je vais vous expliquer les bases d'un environnement de développement typique de Mac OS X. Yii 2.0 a un guide définitif (PDF) et une référence de classe qui couvrent tous les détails de Yii. Californie

Installation du compositeur

Yii2 nécessite Composer, un gestionnaire de dépendances populaire pour PHP. Si Composer n'est pas déjà installé, procédez comme suit:

curl -s http://getcomposer.org/installer | php mv composer.phar / usr / local / bin / composer

Installation de Yii2

Ensuite, utilisez Composer pour installer Yii2. La demande d'installation nécessite que vous utilisiez vos propres informations d'identification de compte Github. inscrivez-vous si vous n'avez pas de compte.

Appelons ce premier projet, "hello":

cd ~ / Sites composer global besoin de "fxp / composer-asset-plug-in: 1.0.0-beta2" composer-créer-projet -prefer-dist yiisoft / yii2-app-basic bonjour

Yii2 fournit deux modèles d'installation différents selon le type d'application que vous développez: de base et avancée. Pour ce tutoriel, nous allons utiliser l'application de base installée par défaut. Le modèle d'application avancée fournit les points d'accès frontal, principal et console pour une application Web plus avancée, telle qu'un blog WordPress, son tableau de bord administratif et ses tâches d'exécution en arrière-plan..

Configuration de votre environnement de développement local

J'utilise gratuitement MAMP open source pour OS X pour mon développement LAMP. Assurez-vous que MAMP est en cours d'exécution et que ses serveurs Web et de base de données sont actifs. Ensuite, créez un lien symbolique pour MAMP vers votre Des sites répertoire app:

 cd / Applications / MAMP / htdocs ln -s ~ / Sites / hello / / Applications / MAMP / htdocs / hello

Ensuite, visitez le site http: // localhost: 8888 / hello / web. Vous devriez voir le modèle d'application de base Yii2 s'exécuter avec Bootstrap 3.x. 


Cette page excitera probablement les développeurs Yii 1.1 qui ne disposent pas d’un support préconfiguré pour la dernière version de Bootstrap, l’incroyable framework CSS réactif open source qui a pris une bonne part du Web..

Yii Architecture d'application

L'une des fonctionnalités les plus importantes du framework Yii est qu'il fournit un contrôleur de vue modèle pour PHP. Cela fournit non seulement un environnement de programmation plus structuré et une compréhension plus aisée du code, mais simplifie un certain nombre de tâches difficiles à exécuter en PHP, telles que la sécurité et la génération de code automatisée. Cela rend également notre code plus facile à étendre et plus réutilisable.

Avec une application Yii, nous dirigeons tout le trafic vers un seul fichier: /web/index.php fichier. Ce fichier intégré charge Yii, toutes les dépendances, puis exécute votre application..

courir(); 

Par défaut, c’est la méthode Index dans /controllers/SiteController.php:

fonction publique actionIndex () return $ this-> render ('index'); 

Généralement, les contrôleurs sont pleins de méthodes, mais avec un code minimal, comme ci-dessus. Les contrôleurs gèrent l'accès, exploitent les modèles et rendent les vues. Le gros de l'intelligence doit être intégré à vos modèles et les vues doivent généralement produire des opérations de modèle relativement simples..

Par défaut, Yii rendra /views/layouts/main.php autour de votre vue d'index dans /views/site/index.php. le main.php layout fournit la structure HTML et CSS de la page, par exemple. la barre d'outils et la zone de contenu. À l'intérieur main.php, vous verrez un bref appel au contenu:

isset ($ this-> params ["breadcrumbs"])? $ this-> params ['breadcrumbs']: [],])?>

Cette $ contenu variable sera remplacée par le code généré à partir de /views/site/index.php, qui est actuellement le code HTML statique qui génère le Toutes nos félicitations! page montrée ci-dessus.

Construire Hello World!

Activer Pretty URLs

Tout d'abord, activons les jolies URL de Yii2 avec mod_rewrite. Sur la page d’accueil de Yii, si vous cliquez sur le bouton Sur option de menu, l’URL sera quelque chose comme http: // localhost: 8888 / hello / web / index.php? r = site% 2Fabout. Nous aimerions changer cela en http: // localhost: 8888 / hello / web / site / about.

le config Le sous-répertoire inclut les configurations d'environnement pour vos applications Web et console, ainsi que les paramètres de base de données futurs. modifier /config/web.php ajouter urlManagement à l'application Web actuelle. Ajouter ce qui suit urlManager section dans le tableau de composants:

 'composants' => [//… 'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true], //… 'request' => [

Ensuite, créez un .htaccess déposer dans / web où le primaire index.php le fichier existe:

RewriteEngine on # Si un répertoire ou un fichier existe, utilisez-le directement RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Sinon, transférez-le à index.php RewriteRule. index.php

Assure-toi mod_rewrite s'exécute localement sur MAMP; sinon, consultez ce guide de débordement de pile.

Dans votre navigateur, visitez cette URL: http: // localhost: 8888 / hello / web / site / about. Vous devriez voir la page A propos de l'application Yii et cliquer sur d'autres options du menu devrait faire apparaître de jolies URL.

Construire le Say Hello World! action

Ensuite, nous allons ajouter une action de contrôleur appelée Dire répéter un message cible de notre choix. Dans /controllers/SiteController.php, ajoutez l'action suivante:

fonction publique actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ target]);  

Cela recherchera un paramètre d'URL appelé cible à faire écho à l'écran. S'il n'y a pas de paramètre cible, le message "World" sera répété. Dans Yii, les actions sont définies comme une méthode nommée avec le préfixe "action" suivi du nom de l'action. Dans ce Contrôleur de site classe, nous utilisons fonction publique actionSay. Yii utilise le préfixe "action" pour différencier les méthodes d'action des autres méthodes.

Le comportement par défaut de la méthode de rendu cherchera un fichier dans views / ControllerID / ViewName.php. Donc, dans / vues / site /, créer un say.php Voir la fiche:

 

Bonjour

Bienvenue sur votre application de démonstration Yii2.

Ceci est le fichier de vue modèle pour répéter la balise HTML statique h1 avec Bonjour suivi de la variable cible. Remarque: Nous codons la variable cible pour sécuriser l'argument de paramètre d'URL contre le code malveillant..

Si vous visitez l'URL, http: // localhost: 8888 / hello / web / site / say? Target = Tuts% 20Readers, vous devriez voir ceci:

C'est un exemple très basique du contrôleur de vue de modèle Yii2. Vous pouvez lire une description plus détaillée de la démonstration Hello World et du Yii2 MVC ici.

Maintenant, configurons notre application avec GitHub et déployons-la sur un serveur de production. 

Configuration de votre environnement d'hébergement à distance

L’application de base Yii devrait fonctionner parfaitement avec Apache ou Nginx, je fournirai des instructions pour Apache et vous trouverez des instructions pour Nginx ici..

Créer un dépôt sur GitHub

Une fois que j'ai configuré un modèle d'application Yii, je crée un référentiel sur Github:

Remarque: C’est un peu plus simple au départ de copier et coller le Yii2 .gitignore de GitHub dans votre fichier ~ / Sites / hello / .gitignore local plutôt que de créer le site à distance et de le fusionner localement, mais cette approche convient parfaitement.

J'utilise l'application GitHub pour Mac OS X plus fréquemment, mais vous pouvez également utiliser la ligne de commande pour initialiser le référentiel. Ci-dessous, je suis les instructions pour ajouter un projet existant à GitHub à l'aide de la ligne de commande (remplacez "youraccount" par votre nom de compte GitHub):

cd ~ / Sites / hello git init git commit -m "premier commit de hello world for yii2" git à distance ajouter l'origine [email protected]: votre compte / hello.git git push -u origine master

Configurer un site Apache sur votre serveur

Si vous ne possédez pas déjà de serveur LAMP ni d’instance cloud, suivez les instructions de mon installation générique Ubuntu pour commencer. Une fois que vous avez votre adresse IP, modifiez vos enregistrements DNS pour avoir un point d’enregistrement A sur votre serveur.. 

votredomaine.com A 192.161.234.17

Ensuite, connectez-vous à votre serveur via l'adresse IP ou le nom de domaine:

ssh [email protected]

Mettre à jour la configuration, installer Git, activer mod_rewrite pour Apache et mcrypt pour PHP:

sudo apt-get mise à jour sudo apt-get mise à niveau sudo a2enmod réécrire php5enmod mcrypt

Configurer l'accès GitHub sur le serveur distant

Nous allons maintenant configurer un utilisateur pour extraire le code de Github qui peut être servi par Apache. Tout d'abord, installez git sur votre serveur.

sudo apt-get install git 

Ensuite, nous créerons un groupe pour www, y ajouterons www-data et GitHub et lui attribuerons la propriété de nos répertoires Web..

adduser github addgroup www adduser github www adduser www-data www chown -R: www / var / www chmod + s -R / var / www chmod -vR g + w / var / www /

Ensuite, nous créons une clé pour l'utilisateur que nous partageons avec GitHub pour garder le code synchronisé:

su github ssh-keygen -t rsa -C "[email protected]" exit cat /home/github/.ssh/id_rsa.pub

Vous verrez quelque chose comme ceci, que vous devez copier et coller sur GitHub.com:

Visitez la page Paramètres de votre référentiel GitH soundub sous clés et ajoutez cette clé à votre référentiel:

Une fois que vous l'ajoutez, vous le verrez répertorié ici:

Enfin, vous pouvez cloner l’arborescence sur votre serveur de production:

git clone [email protected]: votre compte / hello.git / var / www / hello

Si vous êtes un accès GitHub correctement configuré, il devrait ressembler à ceci (sinon, passez en revue ceci):

À mesure que vous étendez la base de code avec cette série de tutoriels et que vous transmettez des mises à jour à partir de votre machine locale, vous pourrez les synchroniser sur votre serveur de production distant avec git pull. Ceci est plus simple que d'extraire manuellement un code d'archive ou de le synchroniser - et deviendra plus utile à mesure que cette série de tutoriels se poursuivra avec les modules suivants.

Créer la configuration du site Apache

Créez un fichier de configuration de site Apache:

nano /etc/apache2/sites-available/hello.conf

Personnalisez cette configuration pour votre nom de domaine:

 NomServeur votredomaine.com # Définissez la racine du document sur "base / web" DocumentRoot "/ var / www / hello / web"  # utilisez mod_rewrite pour la jolie prise en charge des URL RewriteEngine on # Si un répertoire ou un fichier existe, utilisez directement la demande RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Sinon, transférez la demande à index.php RewriteRule. index.php   

Activer votre site:

a2ensite hello.conf a2dissite 000-default.conf service apache2 recharger

Visitez http://votredomaine.com/site/say?target=World! et vous devriez voir votre application s'exécuter sur votre domaine sans la barre d'outils de débogage Yii2 en bas, comme ceci:

Toutes nos félicitations! Nous sommes maintenant prêts à explorer des fonctionnalités plus sophistiquées de Yii2. Si vous souhaitez savoir quand le prochain didacticiel Yii2 arrive, suivez @tutspluscode ou @reifman sur Twitter ou consultez la page de mon auteur. La page de mon auteur inclura tous les articles de cette série dès leur publication..

Si vous avez des questions ou des corrections sur ce tutoriel, merci de les poster dans les commentaires..

Liens connexes

  • Yii Framework Site
  • Introduction au framework Yii (Tuts +) 
  • Autres exemples de programmation Yii libres et Open Source de l'auteur
  • Scripts PHP utiles sur le marché Envato