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
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.
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 ?
J'ai résolue le probleme et effectivement je m'etait tromper sur le gallerie_img