IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Probleme association CakePHP 3, associer des images a une gallerie


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2015
    Messages : 16
    Points : 20
    Points
    20
    Par défaut Probleme association CakePHP 3, associer des images a une gallerie
    Salut j'ia besoin d'aide car je n'arrive pas a faire une page pour ajouter une images qui a une option qui permet de choisir une gallerie ou on doit ajouter cette image.

    J'ai deux table dans ma bdd :
    Galleries
    id
    name

    Gallerie_imgs
    id
    img
    description
    gallerie_id

    J'ai donc fait deux Model Table dans mon cakePHP
    GalleriesTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    namespace App\Model\Table;
     
    use Cake\ORM\Table;
    use Cake\Validation\Validator;
     
    class GalleriesTable extends Table{
     
        public function initialize(array $config) {
            $this->hasMany('GallerieImgs');
        }
     
        public function validationDefault(Validator $validator) {
            $validator->requirePresence('name')
                ->notEmpty('name');
     
            return $validator;
        }
     
    }
    GallerieImgsTable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    namespace App\Model\Table;
     
    use Cake\ORM\Table;
    use Cake\Validation\Validator;
     
    class GallerieImgsTable extends Table{
     
        public function initialize(array $config) {
            $this->hasOne('Galleries', [
                'foreignKey' => 'gallerie_img',
            ]);
        }
     
        public function validationDefault(Validator $validator) {
            $validator->requirePresence('img')
                ->requirePresence('gallerie_img')
                ->notEmpty('img')
                ->notEmpty('gallerie_id');
     
            return $validator;
        }
     
    }
    J'ai un controller GalleriesController qui gere l'ajout de gallerie et d'image pour l'ajout d'image j'ai une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function add_image() {
            $img = $this->loadModel('GallerieImgs')->newEntity();
            if ($this->request->is('post')) {
                $img = $this->loadModel('GallerieImgs')->patchEntity($img, $this->request->data);
                die(debug($img));
                if ($this->loadModel('GallerieImgs')->save($img)) {
                    $this->Flash->success("Image enregistrer");
                    return $this->redirect(['action' => 'index']);
                }
                $this->Flash->error("Impossible d'ajouter l'image");
            }
            $this->set(compact('img'));
        }
    et qui me redirige donc vers la vue qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h2>Ajouter une image</h2>
    <?= $this->Form->create($img); ?>
    <?= $this->Form->input('img'); ?>
    <?= $this->Form->input('description'); ?>
    <?= $this->Form->input('gallerie_id'); ?>
    <?= $this->Form->button('Ajouter'); ?>
    <?= $this->Form->end(); ?>
    Comment faire pour que dans ma liste j'ai tout les nom de gallerie qui existe deja merci d'avance

  2. #2
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Dans ton controller tu dois créer une variable "listGalerie" qui prendra toutes les valeurs ids/noms de tes galeries et que tu passeras en paramètre à ton input "gallerie_id".

    Eg:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public function add_image() {
            $img = $this->loadModel('GallerieImgs')->newEntity();
     
            $listGallerie = $this->find('list', ['keyField' => 'id', 'valueField' => 'name']); // ICI tu as respecté les conventions, les options keyfield et valueField sont donc facultatives.
     
            if ($this->request->is('post')) {
                $img = $this->loadModel('GallerieImgs')->patchEntity($img, $this->request->data);
                die(debug($img));
                if ($this->loadModel('GallerieImgs')->save($img)) {
                    $this->Flash->success("Image enregistrer");
                    return $this->redirect(['action' => 'index']);
                }
                $this->Flash->error("Impossible d'ajouter l'image");
            }
            $this->set(compact('img', 'listGallerie'));
        }

    Et dans ta vue

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h2>Ajouter une image</h2>
    <?= $this->Form->create($img); ?>
    <?= $this->Form->input('img'); ?>
    <?= $this->Form->input('description'); ?>
    <?= $this->Form->input('gallerie_id', [
         'options' => $listGallerie
    ]); ?>
    <?= $this->Form->button('Ajouter'); ?>
    <?= $this->Form->end(); ?>
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

Discussions similaires

  1. probleme avec l'affichage des images dans une jsp
    Par hypothese dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/05/2008, 16h56
  2. inserer des images dans une base de données
    Par alilou04 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2004, 18h54
  3. LYCOS ET MYSQL - Intégrer des images dans une base!
    Par archeo dans le forum Installation
    Réponses: 3
    Dernier message: 06/04/2004, 13h45
  4. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/2004, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo