Outils pour utilisateurs

Outils du site


technique:guide:dev-appli-gestion

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

  • nom de table : pluriel lowercase, exemple : adherents
  • clé primaire : id
  • clé étrangère : <nom_table_singulier>_id, exemple : adherent_id

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

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;
    }
}
technique/guide/dev-appli-gestion.txt · Dernière modification: 2017/10/04 21:56 par admin