Laravel

De InfoXelec
Aller à la navigation Aller à la recherche

Laravel est un framework pour le développement web. Il est adapté pour les petites projets.
Documentation Laravel
La version LTS du moment est la version 6. Vous pouvez retrouver le suivi de versions
Chaque version nécessitera une versions de PHP. Il faut donc le prendre en compte lors des développements en fonction du serveur hébergeant l'application.

Il existe plusieurs sites ou chaines youtube parlant de LARAVEL.

Installation de Laravel

L'installation de LARAVEL nécessite :

  • composer
  • php
  • php-cli
  • php-curl
  • Mbstring PHP Extension php-mbstring
  • BCMath PHP Extension php-bcmath
  • Ctype PHP Extension php-common
  • Fileinfo PHP Extension
  • JSON PHP Extension
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension php-xml

Laravel nécessite la réécriture d'URL (mod_rewrite). Sous Apache2, cela se fait avec la commande a2enmode mod_rewrite

Les versions de Laravel

Laravel 8+
Laravel 6 version LTS -> 3 Sept 2022

Utilisation des permissions

Il faut installer le paquet via composer : > composer require spatie/laravel-permisison
Publier la migration > php artisan vendor:publish -provider="Spatie\Permission\PermissionSecurityProvider"
Nettoyer le cache de configuration > php artisan config:clear
Créer les tables dans la base de données > php artisan migrate

Création de PDF avec fpdf

Il faut installer le paquet via composer > composer require codedge/laravel-fpdf
Publier la migration > php artisan vendor:publish --provider="Codedge\Fpdf\FpdfServiceProvider" --tag=config

Lecture de fichiers Excel (R) avec SimpleXLSX

Il faut installer via composer > composer require shuchkin/simplexlsx
Attention car il utilise les bibliothèques obsolètes (jakub-onderka/php-console-color, jakub-onderka/php-console-highlighter et phpunit/php-token-stream)

Génération de graphiques

ConsoleTVS/Chart est obsolète
La meilleure façon de faire est de générer les charts depuis le Front. Donc cela sera fait depuis une bibliothèque JS comme D3JS ou ChartJS.

Base de données :

Migrer la base de données : php artisan migrate:fresh, l'option fresh permet de supprimer les tables de la base de données avant la création.
Afin de préremplir la base de données, il faut utiliser un Seeder.
La création du seeder se fait via la commande php artisan make:seeder nomtableSeeder
Ensuite, il faut mettre à jour l'autoloader avec la commande composer dump-autoload
L'exécution du remplissage se fait avec la commande php artisan db:seed
Si on ne veut pas tout Seeder mais une classe spécifique : php artisan db:seed --classDatabaseSeeder.

Il est possible de passer des commandes via le module Tinker de Artisan php artisan tinker
On pourra envoyer des commandes php identiques à celles de l'application web.
Pour créer une entrée dans la base, il faut entrer la commande suivante :
DB::table('nom')->insert(['colonne1'=> 'valeur1', 'colonne2' => 'valeur2]);
Pour créer un utilisateur avec un mot de passe :
DB::table('users')->insert(['user' => 'administrateur', 'password' => Hash::make('password')]);
On peut aussi utiliser les commandes suivantes afin de gérer directement l'objet :

use App\Models\ModelName;
$t = new ModelName');
$t->columnname="valeur";

Cas des procédures stockées

Dans Laravel, il est possible de créer des procédures stockées. Pour cela, il faut créer une migration avec la commande php artisan make:migration nom_procedure
Dans le fichier modèle, il faut modifier les fonctions up() et down() comme suit :

$store_procedure = "DROP PROCEDURE IF EXISTS 'nom_procedure';
CREATE PROCEDURE 'nom_procedure' (IN variable type)
BEGIN
    SELECT * FROM table WHERE id = variable;
END;";
DB::unprepared($store_procedure);

Dans la fonction down(), il faut mettre Schema::dropIfExists('nom_procedure');
L'appel de la procédure stockée se fait dans le contrôleur avec un DB::select('CALL nom_procedure(?)',[$variable]);

Déploiement

Pour le déploiement sur un serveur Apache, il faut que le dossier storage et ses sous-dossiers soient en R/W pour le groupe du service Apache (775).
Dans le cas de l'utilisation de SELinux, principalement pour les distributions basées sur RHEL, il faut que les dossiers soient en http_sys_rw_content_t.
Pour l'accès à la base de données, il faut que la variable httpd_can_network_connect_db soit à 1.

Le fichier de configuration du VirtualHost doit être de ce type

Listen 8080
<VirtualHost *:8080>
	DocumentRoot /var/www/html/app/public
	
	<Directory /var/www/html/app/public/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
		Require all granted
	</Directory>
</VirtualHost>

Commandes en vrac :

Lancer un serveur php local : php artisan serve

Formation

Laravel intègre Laravel Sail, permettant de créer des conteneurs Docker pour le développement.

Tinker permet d'avoir une invite de commande au niveau de Laravel.