Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pjehan/edwm2311a-localfood
https://github.com/pjehan/edwm2311a-localfood
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/pjehan/edwm2311a-localfood
- Owner: pjehan
- Created: 2024-03-26T08:55:48.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-04-03T11:15:18.000Z (9 months ago)
- Last Synced: 2024-04-15T15:53:28.447Z (9 months ago)
- Language: PHP
- Size: 198 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LocalFood
## Étapes d'installation
Créer un fichier `.env.local` à la racine du projet et y ajouter les variables d'environnement suivantes :
```
DATABASE_URL="mysql://root:[email protected]:3306/localfood?serverVersion=5.7.36&charset=utf8mb4"
```Installer les dépendances du projet :
```
composer install
```Créer la base de données :
```
php bin/console doctrine:database:create
```Créer les tables de la base de données :
```
php bin/console doctrine:migrations:migrate
```Charger les données de test :
```
php bin/console doctrine:fixtures:load
```Lancer le serveur de développement :
```
symfony serve
```### Optionnel
Utiliser Docker pour démarrer le service Mailpit :
```
docker-compose up mailer
```La boîte de réception Mailpit est accessible à l'adresse suivante : [http://localhost:8025](http://localhost:8025)
Utiliser le composant Messenger pour envoyer des emails :
```
symfony console messenger:consume async
```Utiliser le composant Messenger pour gérer les tâches planifiées :
```
php bin/console messenger:consume scheduler_check_user_accounts -vv
```## Documentation pour la création de tâches planifiées
[Document Symfony Scheduler](https://symfony.com/doc/current/scheduler.html)
Créer une classe qui représentera les données du message qui déclenchera la tâche planifiée.
Dans cet exemple, la classe `CheckUserAccounts` représente le message qui déclenchera la tâche planifiée.
Cette classe ne contient aucune donnée, mais elle pourrait contenir des données nécessaires à l'exécution de la tâche planifiée.```php
userRepository->findInactiveUsers();
foreach ($users as $user) {
// send an email to the user
$email = (new Email())
->from('[email protected]')
->to($user->getEmail())
->subject('Your account is inactive')
->text('Your account has been inactive for a year. Please log in to keep it active.');
$this->mailer->send($email);
}
}
}
```Créer un fichier de configuration pour définir la tâche planifiée.
Dans cet exemple, le fichier `CheckUserAccountsProvider.php` définit la tâche planifiée.
La classe doit implémenter l'interface `ScheduleProviderInterface` et la méthode `getSchedule` qui retourne un objet `Schedule` contenant la tâche planifiée.
L'attribut `AsSchedule` permet de définir le nom de la tâche planifiée qui pourra être utilisé pour la démarrer.```php
schedule)) {
$schedule = new Schedule();
$schedule->add(RecurringMessage::every('1 minute', new CheckUserAccounts()));
$this->schedule = $schedule;
}return $this->schedule;
}
}
```Enfin, il sera possible de tester la tâche planifiée en utilisant la commande suivante :
```
php bin/console debug:scheduler
```