Empfehlungen: Erweiterte Suche

Validation Error

Datenbankobjekte strukturieren und validieren

Validation Error

Beitragvon aioon » Fr 17. Jul 2009, 22:32

Nabend,

habe folgendes Problem:
Code: Alles auswählen
Array
(
    [Message] => Array
        (
            [1] => Array
                (
                    [request_id] => This field cannot be left blank
                )

            [0] => Array
                (
                    [request_id] => This field cannot be left blank
                )

        )

)

Code: Alles auswählen
class Message extends AppModel {

    var $name = 'Message';
    var $validate = array(
        'request_id' => array('numeric')
    );


Versuche meine Daten in Bezug auf dieses Thread models/model-a-speichern-bevor-model-b-gespeichert-wird-t310.html zu speichern:
Code: Alles auswählen
<div class="requests form">
<?php echo $form->create('Request');?>
    <fieldset>
        <legend><?php __('Add Request');?></legend>
    <?php
        echo $form->input('client_id');
        echo $form->input('status_id');
        echo $form->input('priority_id');
        echo $form->input('employee_id');
        echo $form->input('request_type_id');  
        echo $form->input('subject');
        echo $form->input('Message.1.typ');    
        echo $form->input('Message.0.message');                
    ?>
    </fieldset>
<?php echo $form->end('Submit');?>
</div>

Kann mir einer Sagen wie ich das nun speichern muss? Ohne die Zahlen geht nix, auch mit...
Code: Alles auswählen
$this->Request->saveAll($this->data, array('validate'=>'first'))

aber eins habe ich festgestellt, sobald ich , array('validate'=>'first') dieses valiedierungs zeug rausnehme geht es, und die request_id wird übergeben! die wird so oder so übergeben, habe das gefühl das zuerst die daten geprüft werden, und erst dann eingetragen... eigentlich müssen zuerst die daten von request geprüft werden, dann findet ein eintrag der request daten, denn gibt es seine neue id zurück, und ich übergebe die id an message dann prüfe ich die daten von message und speichers ab, aber anscheinend kenne ich mich da viel zu schlecht aus, oder ist diese validierung eh überflüssig, wobei ist die eigentlich nicht, den ich brauch diese ja...
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Validation Error

Beitragvon aioon » Sa 18. Jul 2009, 16:08

okay, problem selbst gelöst! :D

erstens musste ich den validation typ ändern, von first auf atomic! warum? na wie schon oben erwähnt, erst durch atomic wird die abarbeitungs reihenfolge eingehalten 8-)
atomic: If true (default), will attempt to save all records in a single transaction. Should be set to false if database/table does not support transactions. If false, we return an array similar to the $data array passed, but values are set to true/false depending on whether each record saved successfully.


und im view habe ich noch was geändert:
Code: Alles auswählen
    <?php
        echo $form->input('client_id');
        echo $form->input('status_id');
        echo $form->input('priority_id');
        echo $form->input('employee_id');
        echo $form->input('request_type_id');  
        echo $form->input('subject');
        echo $form->input('Message.0.message');
        echo $form->input('Message.0.typ');                            
    ?>


Beide felder haben eine Null und dadurch gehören die dann zusammen :)

Naja irgendwie noch verwirrt das Ganze für mich aber es funktioniert!

Gruß
Alex
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Validation Error

Beitragvon euromark » So 19. Jul 2009, 15:16

halte ich für gefährlich :)
"if database/table does not support transactions"
-> InnoDB versteht das ja, aber die meisten verwenden Mysql in Verbindung mit MyIsam
Und da dürfte es doch mit Transactions dann Probleme geben, oder?
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Validation Error

Beitragvon aioon » So 19. Jul 2009, 16:23

Ich benutze aber InnoDB :) und das hat fast jeder!?

aber was soll ich sonst machen? hast du eine andere idee?
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Validation Error

Beitragvon euromark » Mo 20. Jul 2009, 12:36

nene, bei innoDB ist das schon ok vermutlich
aber ich behaupte, es benutzen mehr leute MyIsam^^
und ich wollte nur die warnen, die dies unter MyIsam nachbasteln... :)
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Validation Error

Beitragvon aioon » Mo 20. Jul 2009, 12:42

ja gut, wie soll man es dann bei myisam angehen?
aioon
 
Beiträge: 39
Registriert: So 12. Jul 2009, 18:14

Re: Validation Error

Beitragvon euromark » Mo 20. Jul 2009, 13:11

validate first
bzw
mit einzelner manueller prüfung aller model-daten

bevor man dann speichert (da es ja nicht mehr rückgängig machbar ist)
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste