Laravel 5
Pour vous permettre un accès thématique voici des liens vers les sujets traités dans les différents chapitres :
Un site d’annonces
- Les données
- La page d’accueil
- Les annonces
- Annonce et message
- Créer une annonce
- L’administration (1/2)
- L’administration (2/2)
- L’interface utilisateur
Ce projet a été créé avec Laravel 5. Si vous utilisez une version ultérieure (6, 7 ou même 8) vous rencontrerez quelques bugs normalement faciles à corriger.
Laravel 5.7 par la pratique
- Introduction
- Installation et style
- L’authentification
- Les données
- Les catégories 1/2
- Les catégories 2/2
- Les images
- La galerie
- Gestion de ses photos
- Le profil
- Les albums 1/2
- Les albums 2/2
- L’administration
- Notation des photos
- Les notifications
- Les langues
Créer une application avec Laravel 5.5
- Introduction
- Installation et style
- Les vues de l’authentification
- Les données
- Les catégories 1/2
- Les catégories 2/2
- Les images
- La galerie 1/2
- La galerie 2/2
- Le profil
- Les langues
- Les tests
- Ajouter le changement de catégorie
Cours Laravel 5.5
I – Les bases
- Présentation générale
- Un environnement de développement
- Installation et organisation
- Le routage
- Les réponses
- Artisan et les contrôleurs
- Formulaires et middlewares
- La validation
- Envoyer un email
- Configuration, session et gestion de fichier
- Injection de dépendance, conteneur et façades
II – Les données
- Migrations et modèles
- L’authentification
- L’oubli du mot de passe
- Jouer avec Eloquent
- La relation 1:n
- La relation n:n
- Le polymorphisme
- Gérer un arbre
- La pagination
- Les ressources
- Les assistants
III – Plus loin avec Laravel
- Les événements
- La localisation
- Les notifications
- La sécurité
- Ajax
- Les vues
- Les tests
- Les fichiers et le cache
- CSS et Javascript
- Vue.js
Cours Laravel 5.3
I – Les bases
- Présentation générale
- Un environnement de développement
- Installation et organisation
- Le routage
- Les réponses
- Artisan et les contrôleurs
- Formulaires et middlewares
- La validation
- Envoyer un email
- Configuration, session et gestion de fichiers
- Injection de dépendance, conteneur et façades
- CSS et Javascript
II – Les données
- Migrations et modèles
- Les ressources (1/2)
- Les ressources (2/2) et les erreurs
- L’authentification
- L’oubli du mot de passe
- La relation 1:n
- La relation n:n (1/2)
- La relation n:n (2/2)
- Un concepteur de schéma
- Manipuler les données
III – Plus loin avec Laravel
- Une application d’exemple
- Des vues propres
- La localisation
- Les événements
- La sécurité
- Les notifications
- Ajax
- Les tests unitaires
- Le déploiement
Série « créer une application Laravel 5.2 »
Cette série a pour objectif de décrire la création de cette application d’exemple.
- Créer une application : les données
- Créer une application : routes, middlewares et commandes
- Créer une application : l’interface
- Créer une application : l’authentification
- Créer une application : le contact
- Créer une application : les articles (front-end)
- Créer une application : les articles (back-end)
- Créer une application : les utilisateurs
- Créer une application : des vues propres
Série « les relations avec Eloquent »
Série « Laravel et AngularJS »
- Laravel et AngularJS : présentation
- Laravel et AngularJS : données et initialisation
- Laravel et AngularJS : login et logout
- Laravel et AngularJS : gestion des rêves
Divers
- Lumen
- Formulaire modal
- Créer un package
- Jouer avec Composer
- Un formulaire multi-étapes
- Le cache de Laravel 5
- Laravel Designer
- Nice Artisan
- Un installateur pour application Laravel 5.2 et 5.3
- Une liste de choix dynamique
- Plages horaires
- Elixir
- PSR-7
- Many to many to many
- Intégrer AdminLTE
- Laravel Boilerplate
- Page dynamique
- Laravel et MDL
- Changer le framework CSS bis
- GraphQL et Laravel
51 commentaires
bestmomo
Il semblerait qu’il y ait eu un changement dans le framework et le seeder déclenche l’événement de création du modèle et ça plante à la création du thumb. En attendant de trouver quelque chose de plus élégant tu peux toujours faire ça dans App\Listeners\ModelCreated :
public function handle(EventModelCreated $event)
{
$event->model->ingoing()->save(new Ingoing);
if (request ()->server ("SCRIPT_NAME") !== 'artisan') {
Thumb::makeThumb ($event->model);
}
}
Edit : après analyse plus approfondie il suffit de bien renseigner la variable APP_URL dans le fichier .env pour que ça passe 🙂
johnsmith
bonjour bestmomo j’aimerais tester votre exemple « Laravel 5.5 example for tutorial » mais je n’arrive pas à l’installer correctement.
Au niveau des migrations j’ai un message d’erreur que voici:
λ php artisan migrate –seed
Migration table created successfully.
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrating: 2017_02_01_233219_create_users_table
Migrated: 2017_02_01_233219_create_users_table
Migrating: 2017_03_10_233219_create_categories_table
Migrated: 2017_03_10_233219_create_categories_table
Migrating: 2017_03_10_233219_create_posts_table
Migrated: 2017_03_10_233219_create_posts_table
Migrating: 2017_03_10_233220_create_comments_table
Migrated: 2017_03_10_233220_create_comments_table
Migrating: 2017_03_10_233220_create_contacts_table
Migrated: 2017_03_10_233220_create_contacts_table
Migrating: 2017_03_10_233220_create_ingoings_table
Migrated: 2017_03_10_233220_create_ingoings_table
Migrating: 2017_03_10_233220_create_notifications_table
Migrated: 2017_03_10_233220_create_notifications_table
Migrating: 2017_03_10_233220_create_post_tag_table
Migrated: 2017_03_10_233220_create_post_tag_table
Migrating: 2017_03_10_233220_create_tags_table
Migrated: 2017_03_10_233220_create_tags_table
Migrating: 2017_03_18_145906_create_category_post_table
Migrated: 2017_03_18_145906_create_category_post_table
Migrating: 2017_03_18_145916_create_foreign_keys
Migrated: 2017_03_18_145916_create_foreign_keys
In Connection.php line 664:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘confirmed’ in ‘field list’ (SQL: insert into `users` (`name`, `email`, `passwo
rd`, `role`, `valid`, `confirmed`, `remember_token`, `updated_at`, `created_at`) values (GreatAdmin, admin@la.fr, $2y$10$OoC6KbJtsY.D/
Dlm.C0.YOcieVz8ZqDD8sOUoe4pyLtbdzUmUhKRS, admin, 1, 1, y5fpWCqJmV, 2018-08-31 10:40:37, 2018-08-31 10:40:37))
In Connection.php line 452:
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘confirmed’ in ‘field list’
par contre avec la version 5.3 tout marche
Merci de votre aide
bestmomo
Salut,
Essaie de lancer cette commande avant la migration :
php artisan vendor:publish --provider="Bestmomo\LaravelEmailConfirmationServiceProvider" --tag="confirmation:migrations"
johnsmith
Même résultat en ayant tout recommencé depuis le début. On dirait que la table « users » n’est pas la bonne.
Quand tu vas dans « database/factories/UserFactory.php » il y a une ligne « confirmed » que je ne retrouve pas dans la BD de même quand tu insères des données dans « database\seeds\DatabaseSeeder.php », il y a la même ligne « ‘confirmed’ => true, » mais pas dans la BD.
erreur : « SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘confirmed’ in ‘field list’ (SQL: insert into `users` (`name`, `email`, `passwo
rd`, `role`, `valid`, `confirmed`, `remember_token`, `updated_at`, `created_at`) values (GreatAdmin, admin@la.fr, $2y$10$GHARfgdtduLBz
pdl1McxVOPpOxdqhWUdlxnhzf1NKNmIHjhQ2pn2W, admin, 1, 1, 0ON3SrlpGl, 2018-08-31 13:34:01, 2018-08-31 13:34:01)) », peut être que je suis hors sujet.
Merci d’avoir répondu rapidement.
johnsmith
je t’envoie la fonctionup que j’ai
« Schema::create(‘users’, function(Blueprint $table) {
$table->increments(‘id’);
$table->timestamps();
$table->string(‘name’)->unique();
$table->string(’email’)->unique();
$table->string(‘password’);
$table->rememberToken();
$table->enum(‘role’, array(‘user’, ‘redac’, ‘admin’));
$table->boolean(‘valid’)->default(false); »
bestmomo
Il manquait un antislach dans mon code :
php artisan vendor:publish --provider="Bestmomo\LaravelEmailConfirmation\ServiceProvider" --tag="confirmation:migrations"
johnsmith
Pour ce qui est de la table « users » et des données le problème est résolu mais j’ai toujours une erreur:
« In AbstractDecoder.php line 83:
Unable to init from given url (http://localhost/files/img01.jpg). »
merci d’avance.
ronald169
salut ici depuis un bon maintenant BESTMOMO nous a snober c’est pas cool de sa par je veux pleurer…
bestmomo
Besoin d’un kleenex ? 🙂
ronald169
tres content de vous revoir ici et non sur laravel.fr
tapond
bonjour j’ai un probleme depuis quelque jours avec laravel et Ajax
en effet je dispose d’un formulaire,d’une route , d’un controlleur et enfin de mon script ajax que voici:
$(document).on(‘click’, ‘[name= »save »]’, function(){
$.ajax({
type: ‘POST’,
url: « {{URL::route(‘contact’)}} »,
data: {
//’token’ : $(‘[name= »token »]’).val(),
//’nom’: $(‘[name= »nom »]’).val(),
//’email’: $(‘[name= »email »]’).val(),
// ‘texte’: $(‘[name= »texte »]’).val()
‘id’ : ‘4’
},
/*complete: function(){
alert(‘!!!!!!!!!!!!!!’);
},*/
success: function(){
alert(« arrivee »);
},
error: function(){
alert(« calee en route »);
},
});
});
Route::get(‘/contact’, ‘ContactController@getContact’)->name(‘contact’);
Route::post(‘/contact’, ‘ContactController@postContact’)->name(‘contact’);
class ContactController extends Controller
{
public function getContact()
{
return view(‘contact’);
}
public function postContact(ContactRequest $request)
{
$contact = new Contact;
$contact->nom = $request->input(‘nom’);
$contact->email = $request->input(’email’);
$contact->texte = $request->input(‘texte’);
$contact->save();
}
}
le soucis c’est que chaque fois que je clique sur le boutton, j’ai toujours le alert(‘calee en route’) je ne comprend pas pourquoi. je ne comprend pas pouquoi j’arrive pas à joindre ma route
bestmomo
Salut,
Il faudrait voir ce qui se passe dans les requêtes avec les outils de développement du navigateur.
ronald169
salut,
j’arrive pas a executer la commande npm install
λ npm install
npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated – replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
npm ERR! Unexpected end of JSON input while parsing near ‘…d209bcbf18477ff21b0d8’
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\ronald\AppData\Roaming\npm-cache\_logs\2018-05-01T01_50_03_856Z-debug.log
j’ai chercher la solution du cote de medium mais sans success
comment peut-on resourdre cela ?
ronald169
oups en passant a ce que sa pourait aider la soluce est :
> npm cache clean –force
> npm install -g
bestmomo
Oui ça m’est arrivé quelques fois d’en arriver là, sans doute les données en cache arrivent à se corrompre au bout d’un certain nombre d’utilisations.
adel
bonjour mesieur
s il vous plait j ai un probleme
j ai mis a jour mon php a 7.2 pour balier les probleme lier au extensions symphony mais il m affiche le probleme suivant
o enable extensions, verify that they are enabled in your .ini files:
– /etc/php/7.2/cli/php.ini
– /etc/php/7.2/cli/conf.d/10-opcache.ini
– /etc/php/7.2/cli/conf.d/10-pdo.ini
– /etc/php/7.2/cli/conf.d/20-calendar.ini
– /etc/php/7.2/cli/conf.d/20-ctype.ini
– /etc/php/7.2/cli/conf.d/20-curl.ini
– /etc/php/7.2/cli/conf.d/20-exif.ini
– /etc/php/7.2/cli/conf.d/20-fileinfo.ini
– /etc/php/7.2/cli/conf.d/20-ftp.ini
– /etc/php/7.2/cli/conf.d/20-gettext.ini
– /etc/php/7.2/cli/conf.d/20-iconv.ini
– /etc/php/7.2/cli/conf.d/20-json.ini
– /etc/php/7.2/cli/conf.d/20-mbstring.ini
– /etc/php/7.2/cli/conf.d/20-phar.ini
– /etc/php/7.2/cli/conf.d/20-posix.ini
– /etc/php/7.2/cli/conf.d/20-readline.ini
– /etc/php/7.2/cli/conf.d/20-shmop.ini
– /etc/php/7.2/cli/conf.d/20-sockets.ini
– /etc/php/7.2/cli/conf.d/20-sysvmsg.ini
– /etc/php/7.2/cli/conf.d/20-sysvsem.ini
– /etc/php/7.2/cli/conf.d/20-sysvshm.ini
– /etc/php/7.2/cli/conf.d/20-tokenizer.ini
j ai esseyer d activer les extensions en enlever les ; dans le fichier php.ini mais ca marche toujours pas
adel
j ai pus regle le proleme mais au lancement de la page principale il m affiche
/*
Fatal error: Uncaught Error: Call to undefined function Symfony\Polyfill\Mbstring\iconv_strpos() in /var/www/html/laravel/vendor/symfony/polyfill-mbstring/Mbstring.php:490 Stack trace: #0 /var/www/html/laravel/vendor/symfony/polyfill-mbstring/bootstrap.php(34): Symfony\Polyfill\Mbstring\Mbstring::mb_strpos(NULL, ‘/json’, 0, ‘UTF-8’) #1 /var/www/html/laravel/vendor/laravel/framework/src/Illuminate/Support/Str.php(107): mb_strpos(NULL, ‘/json’) #2 /var/www/html/laravel/vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php(34): Illuminate\Support\Str::contains(NULL, Array) #3 /var/www/html/laravel/vendor/laravel/framework/src/Illuminate/Http/Request.php(339): Illuminate\Http\Request->isJson() #4 /var/www/html/laravel/vendor/laravel/framework/src/Illuminate/Http/Request.php(400): Illuminate\Http\Request->getInputSource() #5 /var/www/html/laravel/vendor/laravel/framework/src/Illuminate/Http/Request.php(59): Illuminate\Http\Request::createFromBase(Object(Illuminate\Http\Request)) #6 /var/www/html/l in /var/www/html/laravel/vendor/symfony/polyfill-mbstring/Mbstring.php on line 490
*/
aidez moi svp
adel
bonjour mesieur
d abord je vous remercie infiniment pour ce formidable tuto qui est a la hauteur de sont titre « un framework qui rend heureux »
je voudrais vous poser une question si cela nous vous derange pas ,j ai installer laravel via composer avec la commande create-project mais lorsque je me suis connecter au serveur : localhost/laravel5/public ,il m affiche l erreur(Exception) suivante:
Exception
DateTime::__construct(): Failed to parse time string (2018-03-11 13:18:28.-523144) at position 24 (1): Unexpected character
code:
parent::__construct($time, $timezone);
en attandant une reponse de votre part je vous remercie infiniment
bestmomo
Bonjour,
Il faudrait commencer par regarder si tous les prérequis pour Laravel sont bons :
PHP >= 7.1.3
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension
fboussad
Bonjour,
Je trouve ce tuto super, j’aimerai savoir si il existe en version PDF svp, j’aimerai pouvoir l’imprimer.
Merciiiii
et BONNE ANNEE à tous!!!!
bestmomo
Salut,
Merci d’apprécier mon travail. Il n’y a pas de version PDF mais j’ai ajouté un bouton pour pouvoir générer un PDF par article.
fboussad
très réactif MERCIIIIII
fboussad
oooook !!! j’ai rien dit je me suis rendu compte que y’avait le lien PDF quand j’été connecté qu’après avoir posté le commentaire.
merci quand même pour ce TUTO GENIAAAAAAAAL.
a++
lbahjaoui
je ne sais comment Vous remercier pour toutes informations , bon courage
bestmomo
Merci 😉
carruno
Bonjour Bestmomo, le meilleur site francophone pour apprendre ce fabuleux framework.
A propos de cet exemple de Blog, tu as fait le choix d’utiliser un champ « ENUM » pour la gestion des rôles sur les utilisateurs. Ce qui me chagrine dans ce choix c’est que lorsqu’on veut en ajouter un il faut modifier la structure de la base et donc faire des manipulations pour vider et re-remplir les données.
J’aimerais connaitre ton point de vue pour passer plutôt par une table « roles » et une table intermédiaire « users_roles » avec un champ role_id dans la table users.
Quelle serait la méthode la plus propre pour fonctionner comme ça?
Il me semble que la méthode $user = $request->user(); récupère les informations de la table users, et donc ce qui nous intéresse $user->role mais comment utiliser la même méthoe avec une jointure de table pour gérer le cas que je cite?
Merciiii
bestmomo
Bonjour,
Merci pour les encouragement 🙂
En ce qui concerne les rôles j’ai fait un truc simple dans l’exemple pour ne pas trop l’alourdir mais du coup ce n’est pas facilement modifiable.
Pour mettre en place un système plus souple et paramétrable il vaut mieux passer par un package existant (il y en a de nombreux). Voici un article en anglais qui décrit les deux principaux.
carruno
Effectivement ces 2 packages m’ont l’air très intéressant et vont bien plus loin que ce que je comptais faire. Merci pour ce lien
Et juste par curiosité, si je veux utiliser une méthode qui accède non pas à la table seule ($request->user();), mais à plusieurs tables jointes, quelle serait la meilleure approche selon toi?
bestmomo
Salut,
Si on veut plus d’informations que celles contenues dans user alors on peut prévoir dans le modèle User une méthode pour aller les chercher :
$request->user()->getInfos();
Vakarm
J’avais commencé ce cours sur openclassroom. Je suis très content de le retrouver ici en version plus à jour. Merci ! 😀
ciscolybon1
bonjour je voudrais savoir comment codé le formulaire avec date de naissance
takfarinas
l’exemple decettearticlegénère une erreur,çam’a pris 3 heurepour comprendre qu’il faut enlever le « <?php" du fichier "infos.blade.php",
bestmomo
Salut
Quel article exactement ?
takfarinas
salut, désolé pour ce retard !! le soucis est dans ::
l’article : Cours Laravel 5.3 – les bases – formulaires et middlewares
paragraphe : Formulaire
fichier : resources/views/infos.blade.php
ligne : 1
il faut enlevé le « <?php" sinon ça fonctionne pas, en tous cas, c'est le cas chez moi !
bestmomo
Ah oui ! Bien vu 😉
poma
Super blog rempli de bonnes infos sur Laravel, j’èspere que vous allez continuer comme ça 🙂
MERCI
bestmomo
Merci 🙂
jjabrane
Bonjour,
J’aimerais bien de te remercier tout d’abord pour ce jolie blog codé avec laravel , il est très bien expliqué, il m’a beaucoup aidé à comprendre laravel 5.1.
Est ce que vous pouvez nous écrire quelques choses sur la démarche de développement du même blog mais avec laravel 5.2 et angularJS .
Merci Beaucoup pour les articles 🙂
bestmomo
Bonjour et merci !
Il serait effectivement intéressant de faire une version du blog avec un framework côté client. Est-ce que Angular est la meilleure option ? Je ne sais pas parce qu’on a un grand choix de ce côté là ! Je n’ai pas encore exploré les nouveautés de la version 2, peut-être qu’il gagne en simplicité parce que ce n’est pas actuellement son point fort.
jjabrane
Merci, Beaucoup Monsieur Maurice pour vos utiles articles .
Salutations 🙂
jjabrane
Bonsoir,
Je vous remercie énormément pour tous les articles publiés, ils sont très intéressant et utiles,
j’ai appris beaucoup des trucs à travers ton site , vraiment merci beaucoup pour ses jolies publications.
j’aimerais bien si vous publiez quelques trucs a propos de l’intégration et la création de ce même jolie blog mais avec les deux frameworks angularJs(front-end) et laravel 5.2(backend).
Avec tous mes remerciements et respects.
bonhoph
bonjour,
bravo pour le travail d’écriture, simple et efficace!
Petit bug trouvé mais qui ne concerne pas directement vos tutos, il s’agit du htaccess de filemanager.
en mode fastCGI => « php_flag engine off » , et tout ce qui est « php_* » n’est plus reconnu et soulève une erreur apache. Pas pratique si il faut gérer ça à la main à chaque installation.
en tout cas, good job, peu être des idées à vous soumettre, concernant la partie Ajax, je n’en dit pas plus…
cordialement
bestmomo
Bonjour,
Merci d’apprécier mes tutos !
Pour le htaccess de filemanager il faudrait faire un PR sur le projet.
Cordialement
Dounou
Bonjour,
Je suis encore débutant avec le Framework, mais grâce à votre Tuto sur Laravel 4, j’ai pu créer facilement une application.
Actuellement, en travaillant avec Laravel 5 et toujours avec votre Tuto, j’ai constate qu’on utilise beaucoup les Repositories, mais je ne vois pas trop quelles sont les avantages. Pourriez-vous donc expliquer un peu les intérêts de cette méthode ?
Merci d’avance
bestmomo
Bonjour,
Un sain principe de base est de d’attribuer à chaque classe une tâche unique. Ainsi un contrôleur a pour travail de recevoir une requête et d’envoyer une réponse. Pour la mise en forme de la réponse il est judicieux de déléguer les différentes tâches, en particulier la gestion des données. Le rôle d’un repository est justement de gérer des données, on doit juste avoir à lui dire : « garde ça en mémoire », « retrouve moi telle information », etc…
Mais il n’y a rien d’impératif dans cette organisation du code. Toutefois c’est le résultat de la réflexion de nombreux développeurs au cours de pas mal d’années 😉
Concernant les tutoriaux sur Laravel 5 j’en ai un très détaillé qui va sortir le 12 mai sur le site OpenClassRooms.
Cordialement,
Maurice.
Dounou
Merci pour votre votre explication, c’est très claire. Concernant votre tuto sur le site OpenClassRooms j’ai déjà fait l’inscription et j’ai hâte d’y participer.
Cordialement,
Yves Dounou
Cyrock
Merci beaucoup pour tous ces tutoriels Maurice tu fait vraiment du beau travail et tu donnes envie de te lire !
Bonne continuation !
bestmomo
Merci 😉
yannickfogang
Bonsoir à vous j’ai juste un petit soucis avec les sources de laravel5-exemple lorsque je l’install ayant suivi toutes les étapes j’ai une page blanche lorsque j’accède à l’url projectname/public. A noter que je suis sur ubuntu 14.
yannickfogang
désolé mais j’ai trouvé la solution à mon problème, c’était un problème de configuration liée a u permissions d’écriture dans le dossier vendor je crois j’ai du changer les propriétaire du dossier. SUPER tuto en passant je compte le suivre jusqu’au bout.
bestmomo
Salut,
C’est vrai que je n’ai pas trop détaillé l’installation de Laravel. Le commentaire pourra servir à d’autre 😉