Bonjours à tous!
Je suis entrain d'apprendre Cakephp et j'ai un soucis pour le formulaire.

J'ai crée un formulaire il marche très bien cependant l'utilisateur pouvait rentrer n'importe quoi et les 2 champs photo était des inputs ou il fallait mettre le lien de l'image en dur. Pas très sexy vous l'avouerai. J'ai donc fait des validate et mit mon formulaire à jour pour l'accueil de photos. Mais, quand je soumet celui-ci ça recharge juste la page en me vidant les données. Aucune trace des infos ou d'erreur de cakephp :/ .
add.cpt

<?php
echo $this->Form->create('Love', array('type' => 'file'));
echo $this->Form->label('Prénom 1');
echo $form->input('nom1');
echo $this->Form->label('Photo de la personne');
echo $form->file('photo1');
echo $this->Form->label('Prénom 1');
echo $form->input('nom2');
echo $this->Form->label('Photo de la personne');
echo $form->file('photo1');
echo $this->Form->label('Petit mot');
echo $form->input('mot', array('rows' => '3'));
echo $this->Form->label('Date de rencontre');
echo $form->input('date', array('format' => 'dmY')); // ça respecte pas mon format donc si vous aviez une solution aussi pour ce problème ^^
echo $this->Form->label('mdp');
echo $form->input('password');
echo $form->end('Enregistrer', array('class' => 'btn primary')); // il ne veut pas non plus prendre la class le salaud
?>

ma function add() qui me sert aussi d'edit

function add($id=null) {

    if (empty($this->data)) {
        $this->Love->id = $id;
        $this->data = $this->Love->read();
        }

    else {
        if ($this->Love->save($this->data)) 
                {
                $this->flash('Votre love a été sauvegardé.','/loves');
            }
        }
    }

Mon model

class Love extends AppModel {
    var $name = 'Love';
    var $validate = array(
        'nom1' => array(
            'alphanumeric' => array(
                'rule' => array('alphanumeric'),
                'message' => 'Le prénom 1 semble contenir de caractères spéciaux.',
            ),
        ),
        'photo1' => array(
            'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),
            'message' => 'Votre fichier ne semble pas être une image.'
            ),

        'nom2' => array(
            'alphanumeric' => array(
                'rule' => array('alphanumeric'),
                'message' => 'Le prénom 2 semble contenir de caractères spéciaux.',
            ),
        ),
        'photo2' => array(
            'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),
            'message' => 'Votre fichier ne semble pas être une image.'
            ),

        'mot' => array(
            'minlength' => array(
                'rule' => array('minlength', 6),
                'message' => 'Allons allons, tu as surement plus a dire que ça :o)',
            ),
        ),
        'date' => array(
            'date' => array(
                'rule' => array('date', 'dmy'),
                'message' => 'La date est mauvaise',
            ),
        ),
        'password' => array(
            'between' => array(
                'rule' => array('between', 5, 15),
                'message' => 'Le mot de passe doit entre 6 et 20 caractères',
            ),
        ),
    );
}

Désolé pour la longeur du code mais je ne vois vraiment pas où ça bug :/

Merci :)

5 réponses


Bonjour,
Quel version utilise tu de cakephp ?

Corentin

Hotgeart
Auteur

Bonjour,
CakePHP 2RC.
Merci

pourquoi tu n'utilises pas
<?php echo $this->Form->input('file',array('label' => "ton label","type"=>'file'));?>
pour gérer tes images?

Hotgeart
Auteur

Ca change quelque chose?

EditJ'ai testé mais ça ne change rien.

déjà comme tu utilises cake2 utilises les nouvelles façon de faire $this->request->data au lieu de $this->data et pour le formulaire $this->Form->input().
De plus, il manque le champ id dans ton form donc ta fonction n'a pas l'id et fait un insert