Table des matières

Développement de l'appli de gestion

Généralités

L'application est écrite en PHP, avec le FrameWork CakePHP version 3. Il a pas mal de documentation et une communauté française ici.

Ce framework n'est pas aussi répandu que Symphony ou d'autres, en revanche il est très efficace pur faire les 80% premier pourcent d'une application. Il sait générer une appli web qui permet de modifier le contenu d'une base de données simplement à partir du schéma de la base et de conventions de nommage.

Les conventions de Cake pour la BDD

Cake c'est déployable avec un outil qui s'appelle Composer (un package manager PHP).

L'outil de génération de CRUD s'appelle Bake (to bake a cake, logique)

Liens utiles

Liens de choses qui pourraient être intégrés

Liste de plugins à envisager

https://github.com/FriendsOfCake/awesome-cakephp

Quelques exemples glanés dans la doc pour les validations

namespace App\Model\Table;
 
use Cake\ORM\Table;
use Cake\ORM\RulesChecker;
use Cake\ORM\Rule\IsUnique;
 
class ArticlesTable extends Table
{
    public function initialize(array $config)
    {
        $this->primaryKey('my_id');
        $this->addBehavior('Timestamp', [
            'events' => [
                'Model.beforeSave' => [
                    'created_at' => 'new',
                    'modified_at' => 'always'
                ]
            ]
        ]);
    }
 
    public function validationDefault(Validator $validator)
    {
        $validator
            ->requirePresence('title', 'create')
            ->notEmpty('title');
 
        $validator
            ->allowEmpty('link')
            ->add('link', 'valid-url', ['rule' => 'url']);
 
        $validator
            ->add('title', 'notEmpty', [
                'rule' => 'notEmpty',
                'message' => __('You need to provide a title'),
            ])
            ->add('body', 'notEmpty', [
                'rule' => 'notEmpty',
                'message' => __('A body is required')
            ]);
 
        $validator->add('email', 'valid', [
            'rule' => 'email',
            'message' => 'Invalid email'
        ]);
 
        $validator
            ->add('role', 'validRole', [
                'rule' => 'isValidRole',
                'message' => __('You need to provide a valid role'),
                'provider' => 'table',
            ]);
        return $validator;
    }
 
    public function isValidRole($value, array $context)
    {
        return in_array($value, ['admin', 'editor', 'author'], true);
    }
 
    public function buildRules(RulesChecker $rules)
    {
        // Add a rule that is applied for create and update operations
        $rules->add($rules->isUnique(['email']));
 
 
        $rules->add(function ($entity, $options) {
            // Return a boolean to indicate pass/failure
        }, 'ruleName');
 
        // Add a rule for create.
        $rules->addCreate(function ($entity, $options) {
            // Return a boolean to indicate pass/failure
        }, 'ruleName');
 
        // Add a rule for update
        $rules->addUpdate(function ($entity, $options) {
            // Return a boolean to indicate pass/failure
        }, 'ruleName');
 
        // Add a rule for the deleting.
        $rules->addDelete(function ($entity, $options) {
            // Return a boolean to indicate pass/failure
        }, 'ruleName');
 
        return $rules;
    }
}