[RESOLU] association CakePHP, associer des images a une gallerie

Par Steeven Tronet, il y a 10 ans


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

<?php 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

<?php 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 :

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 :

<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

4 réponses

Lartak, il y a 10 ans

Pourquoi est-ce que tu mets dans la validation de ta table GallerieImg gallerie_img, alors que d'après ce que tu nous montres, ce champ n'existe pas dans la table ?

Flitflit, il y a 10 ans

rajoute

$this->loadModel('Galleries'); $galleries = $this->Galleries->find('list'); $this->set(compact('galleries'));

dans add image
si les model sont bons cakephp va automatiquement faire de $this->Form->input('gallerie_id') une liste déroulante avec tes différentes galleries.

Steeven Tronet, il y a 10 ans

J'ai résolue le probleme et effectivement je m'etait tromper sur le gallerie_img

Lartak, il y a 10 ans

Si ton problème est résolu, penses à mettre ton sujet comme tel.