2010-10-19 2 views
0

J'ai une application CakePHP qui permet à un utilisateur de s'inscrire et d'afficher des projets. À un certain moment pendant que j'ai été bricoler avec elle, je l'ai réussi à changer la façon dont la date actuelle est capturée lorsque l'enregistrement utilisateur est créé :(lorsqu'un nouveau compte utilisateur est créé la date est réglé par défaut àCakePHP: Enregistrement de l'utilisateur n'enregistre pas la date correcte

Jan 19th 1970, 01:00 

ici est mon action de registre dans le contrôleur de l'utilisateur:

function register() 
{ 
    if (!empty($this->data)){ 
     if ($this->data['User']['password'] 
       == $this->Auth->password($this->data['User']['password_confirm'])) { 

        $this->User->create(); 
        if ($this->User->save($this->data)){ 
         $this->redirect(array('action' => 'index')); 
        } 

     } else { 
      $this->Session->setFlash('password mismatch'); 
    } 
} 
} 

vue registre:

<?php 
$currentdatetime = time(); 
echo $form->create('User', array('action' => 'register')); 
echo $form->input('username', array('label' => 'Username')); 
echo $form->input('fname', array('label' => 'First name')); 
echo $form->input('lname', array('label' => 'Last name')); 
echo $form->input('emailaddress', array('label' => 'Email Address')); 
echo $form->input('website', array('label' => 'Website')); 
echo $form->hidden('created', array('value' => $currentdatetime)); 
echo $form->input('password', array('label' => 'Password', 'type' => 'password')); 
echo $form->input('password_confirm', array('label' => 'Retype Password', 'type' => 'password')); 
echo $form->submit(); 
echo $form->end(); 
?> 

J'ai pas NULL, par défaut « 0000 table des utilisateurs avec une colonne DATETIME créé. -00-00 '

Quelqu'un peut-il m'aider ici? Je pense que je suis peut-être juste une ligne de supprimé la morue ou quelque chose

Merci,

Jonesy

+0

Il n'y a pas de données de date à nous pour déboguer. Vous devrez vérifier quelques éléments ... Comment la date est-elle transmise au contrôleur à partir de la vue? Si ce n'est pas dans le bon format, c'est votre problème. – Stephen

+0

non désolé que juste le format que j'ai afficher le datetime comme dans la vue. J'ai mis à jour mon code pour ressembler à ce que je pense que je l'avais comme. Mais ça ne marche pas, peut-être que vous pouvez aider? – iamjonesy

Répondre

3

La valeur par défaut de la colonne created doit être NULL selon la cookbook:

Ces champs doivent être des champs datetime avec la valeur par défaut à NULL pour être reconnu par CakePHP.

+0

Legend! merci dhofstet! – iamjonesy

2

Sur inserts, CakePHP remplira automatiquement la date s'il y a une colonne datetime nommée created. Vous n'avez pas besoin de remplir la date vous-même.

Si vous souhaitez remplir manuellement la date, vous devez le faire au format db (par exemple, YYYY-MM-DD hh:mm:ss). Votre code ne fait que passer un horodatage unix et c'est pourquoi la date n'est pas renseignée correctement.

Pour soumettre la date manuellement, vous avez deux options. Vous pouvez utiliser la fonction date:

$currentdatetime = date('Y-m-d H:i:s'); 

ou vous pouvez utiliser la fonction native de la base de données. Pour MySQL, ce serait NOW():

$this->data['User']['created'] = DboSource::expression('NOW()'); 
$this->User->save($this->data); 
+0

c'est intéressant parce que je n'avais pas le champ caché là au début et il se comporte toujours de la même façon. Essayé $ this-> data ['User'] ['created'] = DboSource :: expression ('NOW()'); mais encore je reçois 19 janvier 1970, 01:00 pour la date – iamjonesy

Questions connexes