L'essentiel de CakePHP

Finaliser la configuration

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Afin d'avoir un blog complètement fonctionnel, il faut changer les routes et la page d'accueil de votre site.
09:26

Transcription

Dans la vidéo précédente, j'ai ajouté la fonction beforeFilter. Donc beforeFilter permet d'autoriser ou non certaines actions pour des utilisateurs non authentifiés. Donc ici j'autorise par défaut Index, View et Display pour chacun des utilisateurs non authentifiés. Donc ça pose un réel problème de sécurité puisque par exemple dans UsersController, j'ai une fonction Index, donc cela signifie que un utilisateur qui n'est pas connu de la plateforme peut avoir accès à la liste des utilisateurs. Donc ça c'est très problématique, du coup je vais commenter cette fonction et je vais du coup la remplacer par une ligne similaire en fait dans chacun des controllers. Je vais donc autoriser certaines actions dans chacun des controllers. Pour ça, je vais aller dans ArticlesController je vais donc créer un beforeFilter tout en haut. Et ici je n'oublie pas le Use, parce que ici, cette fonction-là prend en paramètre un évémenement. Donc ici je vais autoriser Index et View. Ensuite, dans le fichier Categories je vais devoir faire la même chose. Donc ici je ne vais rien autoriser. Ici, je l'ai déjà collé. Ici, je n'autorise rien parce que Categories sera uniquement accessible pour des administrateurs. Ensuite nous allons ajouter une colonne à la table Articles. La table Articles qui est ici. Je vais donc ajouter une colonne, je vais ajouter la colonne « userid » pour avoir l'auteur. Comme je fais ça, il faut que je relance entièrement la génération d'articles Là il me pose la question « Est-ce que je veux écraser toutes les modifications? » et je fais oui pour tout, c'est le « A » pour « all ». Là le problème, c'est que ici j'ai perdu certaines modifications Les modifications que j'ai pu faire par exemple dans l'entité Je vais devoir les remettre. Je vais aller dans l'entité. Ici Model, Entity, Article Fort heureusement, elles ont été gardées Sinon ici c'est possible que elles aient été écrasées. Ici, j'ai bien le Slug qui est automatiquement renseigné. Aussi, petite chose à savoir, c'est que comme je viens de regénérer l'ensemble, Il est possible ici que dans le Edit et dans le Add, J'ai le Slug et le userId. Donc ça je vais l'enlever. Puisque le Slug et le UserId c'est automatiquement créé. Donc ça je peux l'enlever. Dans le Edit, c'est pareil. Voilà pour ces vérifications-là. Ensuite je vérifie que dans Articlescontroller dans le New, ici j'ai perdu la ligne qui permettait d'assigner automatiquement le UserId. Donc là je vais créer cette ligne. Par défaut $article-UserId recevera l'Id de l'utilisateur actuellement authentifié. J'enregistre. Maintenant il faut aussi que je veille à ce que dans la pagination Ici j'ai bien Category et User. Aussi sur le All. Ici c'est bien le cas. Ça, ça veut dire que dans la pagination je vais avoir la possibilité, lorsque je vais cliquer sur une catégorie d'aller la voir directement. Donc accéder à l'Actionview de la catégorie quand je clique sur une catégorie donnée. Ensuite nous allons essayer d'ajouter un article, Donc pour ça nous allons nous rendre sur New Article. Donc là je crée un Article. Ici on peut voir qu'on a une erreur. Pourquoi? C'est parce que par défaut comme nous avions créé le Slug dès le départ, il y a une validation qui s'est automatiquement ajoutée dans Table, ArticleTable. Donc pour ça vous pouvez enlever le Slug, sa validation. Vous enregistrez et vous revalidez votre formulaire. Et là, votre Article a été bien créé. Ici, par rapport à ce que je disais toute à l'heure, On a bien là une catégorie. Donc quand on clique ici on va bien aller sur la View Category. Quand on revient, on voit ici par contre que le Slug n'a pas été créé par défaut. Là je vais aller vérifier dans Article. Ici normalement le Slug est censé être fonctionnel. Simplement parce que je n'ai pas bien validé mon fichier. Si maintenat je recrée un nouvel Article. Test 2, Test 2. J'ai bien le Slug qui a été créé. Ici par défaut on affiche l'identifiant. Cela n'est pas forcément très parlant. Donc on va changer cela dans Article, Index. Et au lieu d'afficher l'Id on va afficher le UserName, ce qui sera beaucoup plus parlant. Voilà, donc là j'ai bien le UserName. Ensuite, imaginons que ici j'ai envie d'avoir: "Bonjour", et mon nom. Donc ça c'est très simple. Donc je vais le faire uniquement sur le Index. Donc je vais le mettre ici par exemple juste en dessous de Action. Je vais faire ça. J'ajoute un Li. "Bonjour", et là je fais $this-request-session Donc je récupère ma variable de session qui s'appelle: Auth.User.UserName. Pour rappel, les variables de session on les a ici, dans session, Auth, User, UserName. Ensuite imaginons que le menu ici, on souhaite qu'il soit caché, si on n'est pas connecté. Ici vous pouvez voir que le "Bonjour" et le nom fonctionnent correctement. Pour cela il suffit d'ajouter un test, tout simplement. Pour cela, il suffit de faire un test PHP classique. Donc on fait $this-request-session. Cela permet d'appeler comme ici les sessions. Et ensuite on fait un endif. Ici j'ouvre bien mon if et ici je le ferme. Donc si je rafraîchis, ici c'est normal que ça s'affiche, puisque ici je suis connecté. Par contre si je vais en navigation privée, donc si je n'ai plus de session, ici on voit que le menu a bien disparu. Là nous allons mettre en place des Routes spécifiques. Puisque j'aimerais bien que sur ma homepage afficher des Articles. Pour cela j'ajoute simplement ça. Ici je précise que je veux Id, tiret et mon Slug pour le controllerArticle et pour l'Actionview. Donc ici je fais blog1, tiret test, je tomberais automatiquement sur Articleview. Et ensuite slash, ça affiche Article, et ça fait l'action display, en fait. Ensuite il faut simplement que j'aille dans Articlescontroller, que j'ajoute une method display, que je vais mettre tout en bas, par exemple. Donc ici cette méthode-là, je fais une pagination, donc c'est exactement comme l'Index. Ensuite je vais créer le ctp ici. Display. Je colle la même chose que dans l'Index. Et ensuite je n'oublie pas d'autoriser dans le beforeFilter. Il faut aussi bien veiller à ce que dans le route ici je supprime bien ça, puisque sinon il va y avoir un conflit. Ensuite j'ajoute le Slug dans mon Index.ctp Donc Ici je fais le View, à travers l'Actionview. Et je veux l'Id et le Slug. Je passe donc les deux maintenant. Ici je vais sur ma homepage. Ici on peut voir que j'affiche bien mes articles. Ici j'ai bien le View et pour l'instant je n'ai pas encore le Slug. C'est normal parce que j'ai modifié ici le Index, alors qu'il fallait que je modifie directement le display. Donc là sur le link. Dond ici j'ai blog, tiret rien, puisque ici je n'avais pas de Slug, et là j'ai bien mon Slug. donc 3 tiret, test 2, c'est normal parce que pour la Id2 je n'avais pas encore de Slug, car je ne l'avais pas encore renseigné. Et ici, j'arrive bien sur mon affichage, Display en ma vue de mon article test2. Donc ensuite nous verrons comment aller un petit peu plus loin avec CakePHP.

L'essentiel de CakePHP

Développez des applications web évolutives avec CakePHP, du simple blog au site e-commerce à fort trafic. Installez et configurez le framework, maîtrisez le routing, etc.

3h39 (45 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
CakePHP CakePHP 3
Spécial abonnés
Date de parution :22 nov. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !