2010-09-04 23 views
0

donc je un tarif qui hasMany Prix (chacun pour différentes devises - ne compte pas vraiment)CakePHP SaveAll ne fonctionne pas du tout

la vue (supprimé parties non pertinentes)

<?php echo $this->Form->create('Tarif'); 
    echo $this->Form->input("Price.0.price"); 
    echo $this->Form->input("Price.0.currency"); 
    echo $this->Form->input("Price.0.sms_format"); 
    echo $this->Form->input("Price.0.sms_number"); 
    echo $html->link(__('Add currency', true), '#', array('onclick'=>'return false;', 'class' => 'tarifs-add-currency')); 

    echo $this->Form->input('Tarif.valid_since', array('timeFormat' => '24')); 
    echo $this->Form->input('Tarif.valid_until', array('timeFormat' => '24')); 
    echo $this->Form->input('Tarif.storage_time', array('label' => __('Storage time (days)', true))); 
echo $this->Form->end(__('Submit', true));?> 

Le contrôleur fonction pour l'enregistrer ressemble à ceci

function admin_add() { 
    if (!empty($this->data)) { 
    $this->Tarif->create(); 
    if ($this->Tarif->saveAll($this->data)) { 
     $this->Session->setFlash(__('The tarif has been saved', true)); 
     $this->redirect(array('action' => 'admin_index')); 
    } else { 
     $this->Session->setFlash(__('The tarif could not be saved. Please, try again.', true)); 
    } 
    } 
} 

le lien « ajouter la monnaie » est là pour ajouter de nouvelles entrées pour les nouveaux prix, mais qui ne sont pas le problème, car il ne fonctionne pas même sans y ajouter des devises. Lorsque j'essaie de le sauvegarder, il est écrit 'Le tarif n'a pas pu être sauvegardé. Veuillez réessayer.'. Ne savez-vous pas ce que je devrais changer pour le faire fonctionner?

Merci EL

Répondre

2

Pour moi ce regard comme vous avez un problème de validation - vérifier si vos modèles vous avez des règles de validation sur les champs qui ne sont pas sous la forme. Par exemple, si vous avez un champ user_id dans la table et si vous construisez votre modèle avec la console de cuisson, il est possible que ce champ soit créé comme numérique. De cette façon, même s'il n'est pas sous la forme validée, le formulaire renvoie false. Essayez d'imprimer $ this-> YourModel-> validationErrors et voyez s'il y a quelque chose là-bas.

Un autre conseil - avez-vous utilisé par hasard beforeSave() et beforeValidate() dans votre modèle? Si tel est le cas, ils doivent retourner bool true sinon la fonction save peut également renvoyer false et ne rien sauvegarder.

+0

Merci pour votre réponse Nik, validationError montre que tarif_id pour le prix n'est pas valide ... Je pensais que cake s'en occuperait dans la méthode saveAll(), donc y a-t-il un gâteau pour régler le tarif_id pour tous les prix ou dois-je juste parcourir tous les prix et le régler manuellement? – ELwhis

+0

Suppression de la règle de validation tarif_id du modèle Price - tout fonctionne correctement maintenant. Merci beaucoup;) – ELwhis

+0

Fondamentalement, quand vous avez ParentModel-

Questions connexes