Je suis actuellement en train de modifier les fonctions admin d'un site internet.
J'ai une fonction add (Me permettant d'ajouter une référence (exemple : construction d'une villa).
Les champs dont j'ai besoin pour l'écriture sur la database sont les suivants :
-Nom
-Description
-Catégorie (Qui est sur une autre table de la DB avec une fk.) sous forme de liste déroulante.
J'ai réussi sans autre à créer les deux premiers champs, j'ai aussi réussi à créer le 3ème avec un appel sur l'autre table pour récupérer que les noms des catégories, non pas l'id ou la description.
Mais j'ai cependant deux problèmes : J'aimerais mettre une valeur par défaut dans la liste déroulante (Par exemple : "Veuillez sélectionner une catégorie").
Le second problème est le fait que lorsque je 'envoie le formulaire, cela se crée bien en effet, mais category_id m'affiche toujours 0, malgré que je choississe une autre.
Voici mon code :
ReferencesController.php
function admin_add() {
$this->layout = "admin";
$d['categories'] = $this->Reference->Category->find('list');
$this->set($d);
//Vérification si les données sur formulaire ont bien été postées
if ($this->request->is('post')){
//Ici, on vérifie si les données peuvent être validées et sauvegardées
$this->Reference->create();
if ($this->Reference->save($this->request->data)) {
//Message flash en session puis on redirige
$this->Session->setFlash(__('La référence a été ajouté.'));
}
} else {
//si il n'y a pas de données.
$this->Session->setFlash('Impossible de créer la référence.');
}
}
admin_add.ctp
<h1><?php echo $this->Html->image('admin/icons/posts.png', array('alt' => "Ajouter des références", 'title' => "Ajouter des références")); ?> Ajouter des références</h1>
<div class="bloc">
<div class="content">
<?php echo $this->Session->flash(); ?>
<?php echo $this->Form->create('Reference'); ?>
<?php
echo $this->Form->input('name', array('label' => 'Nom'));
echo $this->Form->input('description', array('label' => 'Contenu'));
echo '<label>Catégories</label>';
echo $this->Form->select('category',$categories, array('label' => 'Catégories'));
?>
<?php echo $this->Form->end('Envoyer'); ?>
</div>
</div>
Reference.php
<?php
class Reference extends AppModel{
public $belongsTo = "Category";
}
?>
Category.php
<?php
class Category extends AppModel{
public $hasOne = 'Reference';
}
?>
J'espère avoir tout clarifié, la situation n'étant pas très simple pour moi même non plus, et vous remercie par avance de votre aide.