Salut les amis.
Aujourd'hui j'me retrouve coincé face un petit problème.
Je suis actuellement en train de créer un outil pour un client et je m'attaque à la partie final => L'installation sur le server

J'aimerais que l'on m'explique comment peut on créer une base de donnée via Cakephp.
Car je veux que ma cliente puisse utiliser cet outil sans se préoccuper de la base de donnée. Avec juste un formulaire à remplir ( genre wordpress )
Je suis un petit peu paumé ... j'espère que c'est clair :/

Merci d'avance ;)
EDIT : J'utilise CakePhp 2.10
Jinou

11 réponses


Alexandre Chauvin
Réponse acceptée

Ba c'est assez simple, télécharge un Cakephp 2.1 et tu va dans le fichier view : Pages/home.ctp ....
a la ligne 90 environ tu as un bout de code pour testé si la base de donnée exist ou pas , tu reprend les bouts de code que tu place dans ton before filter.

dans la config, tu as un fichier Schema.php. c'est la dedans que tu va maintenir tes tables a jours (avec la console cake schema update)

par contre, qui dit bdd pour enregistrer eds infos dit partie admin pour rentrer les infos... donc compte utilisateur, secu etc...

si tu veux aller vite pour la partie admin, il y a ce qu'on appel le "scafolding". tiens, de la lecture : https://book.cakephp.org/2.0/fr/controllers/scaffolding.html#creer-une-interface-admin-simplifiee-avec-scaffolding

Jinou
Auteur

Ouai t'inquiete pas pour tout ca, l'outil est tout fini et à tout ce qu'il faut. Mais c'est vraiment le point noir de ce projet ^^
Je regarde ca et reviens vers toi. Merci.

Jinou
Auteur

En fait je veux pas mettre mes table à jour, je veux vraiment créer une nouvelle base de donnée avec les bonne table. Et je vois pas en quoi le schema peut m'aider. Si t'as plus d'info. :)

Pour être plus précis je voudrais faire un truc du genre :

if( la_table NOT EXISTS){
    //on creer la table
}else{
    // J'aviserais !
}

Un truc dans le genre, mais la façon de marcher de Cakephp me met un peu des barrière pour faire ce que je veux.
Normalement on peut faire un truc du genre :

$db->exec('CREATE ma_table IF NOT EXISTS');

Mais avec cakephp je calle.

ben je voit pas trop comment tu va pouvoir faire que que cake se sert de model et du schema pour accéder aux différentes tables... il n'existe pas de model "dynamique". un model = 1 table. si pas de model associé a ta table, tu pourra pas y accéder... (il me semble)

Jinou
Auteur

Oui je sais bien c'était la ma difficulté. Mais en y réfléchissant est ce que je peux pas me faire un fichier d'installation en vulgaire procédurale qui sera lancé automatiquement si la base de donnée n'existe pas et dans le cas contraire on pointe direct sur Cake. J'pense que je me complique la vie pour rien.

J'essaie ca et j'reviens pourl e verdicte. Merci de tes réponses.

apreès sinon, avec la console, tu peux mettre a jour ton schema et creer des models. donc si tu fait ta requette de création de table, tu peux enchainer avec la generation de ton schema et de ton model... a tester

Jinou
Auteur

Oui mais du coup ca veut dire que je dois utiliser la console à chaque fois que je ferais une nouvelle installation non ?
Et ma cliente risque d'être complètement paumé.
J'vais déjà testé ce que j'ai dis et si vraiment ca marche pas je tente ce que tu m'as proposé :)

Je pense que crée un fichier d'install peu etre pas mal, tu fait un fichier qui genere automatiquement les fichier app/Config/database.php , app/Config/Email.php et app/Config/Core.php (pour les salt etc) le tout avec un jolie formulaire ...
Tu peu le faire sans procédural et direct dans cakephp non? si tu crée une fonction dans ton AppController.php (beforeFilter) qui verifie que les 3 fichiers existe bien, si il n'exist pas tu renvois vers un controller InstallController.php , et si les 3 fichier existes , tu verifie si InstallController exist, si c'est le cas tu balance un message d'erreur pour dire de supprimer le fichier d'installation (ou tu le unlink() direct).

Jinou
Auteur

Merci pour vos réponse et je suis ta marche à suivre Alexandre. Cependant je reste confronté au problème que j'ai depuis le début.
Comment je fais avec CakePHP pour vérifier si le nom de base de donnée rentré dans mon formulaire existe. Et ainsi la créer si elle n'existe pas.
Car dans Cakephp pour faire une requete tu passe par le Model. Et le model va déjà pointer sur la base de donnée et du coup te retourne une belle erreur.
Donc la meilleur chose à faire serrait de chopper cette erreur avant Cakephp pour ne pas qu'il affiche l'erreur. Et moi de mon coté je dis qu'en cas d'erreur je créer la table.
Donc comment feriez vous ?
Merci d'avance.

Jinou
Auteur

Mévoui ! Suis je bête ^^.
Je l'avais complètement zappé ce fichier. Bien vu ;)
Et bien sujet résolu Merci Alex. Et merci aussi à toi Keulu ;)