Empfehlungen: Erweiterte Suche

Werte automatisch in Add-Formular eintragen

Daten auslesen, verarbeiten und den Views übergeben

Werte automatisch in Add-Formular eintragen

Beitragvon ckay » Di 29. Dez 2009, 12:42

Hallo,

ich habe folgendes Problem. Ich habe eine Tabelle 'posts' und eine 'comments'. Jedem 'post' sind mehrere 'comments' zugeordnet. Die Kommentare sollen unterhalb des betreffenden 'post' angezeigt werden. Wenn jetzt jemand einen neuen Kommentar schreiben möchte, soll er einfach auf ein Add-Button unterhalb des jeweiligen 'posts' klicken. Danach sollte dann ein Add-Formular für einen neuen Kommentar geöffnet werden, in dem bereits die 'post_id' des 'posts' eingetragen ist. Es wäre ja nicht besonders komfortabel, wenn der Nutzer erst nochmal über ein Select Field den richtigen Post aussuchen müsste.
Meine Versuche über den Request im Controller die entsprechenden Parameter zu übergeben sind leider bisher kläglich gescheitert. Irgendwie bekomme ich die ID des posts nicht in das Comment-Formular eingetragen.
Wahrscheinlich ist es ziemlich einfach, da ich trotz intensiver Suche noch keinen Tipp gefunden habe. Für eure Hilfe im voraus schon mal Danke!

Gruß ckay
ckay
 
Beiträge: 7
Registriert: Sa 5. Dez 2009, 11:45
CakePHP-Version: 1.2.5
OS: MacOS X 10.5.5

Re: Werte automatisch in Add-Formular eintragen

Beitragvon mbrod » Di 29. Dez 2009, 13:16

Wahrscheinlich gibt es für dieses Problem mehrere Lösungen.
Eine Möglichkeit: die post_id über benannte Parameter an die Add-Action übergeben.
View/posts/...ctp:
Code: Alles auswählen
echo $html->link('add',array('controller'=>'comments_controller','action'=>'add/post_id:'.$post_id))

Im comments_controller kann man die benannten Parameter über die php-Funktion extract() dann wieder einer Variable zuordnen. (Gedacht für den Fall mehrerer Parameter)
Code: Alles auswählen
if(!empty($this->params['named'])){
    extract($this->params['named']);
}

$post_id kann man dann über $this->set() an die View/comments/add.ctp weitergeben und in einem $form->hidden() unterbringen.
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Werte automatisch in Add-Formular eintragen

Beitragvon euromark » Di 29. Dez 2009, 13:34

@mbrod

korrekter wäre
Code: Alles auswählen
echo $html->link('add', array('controller'=>'comments', 'action'=>'add', 'post_id'=>$post_id))
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Werte automatisch in Add-Formular eintragen

Beitragvon mbrod » Di 29. Dez 2009, 13:50

Stimmt! Ich bin da noch nicht konsequent genug.
Und mit mehreren benannten Parametern dann so?
Code: Alles auswählen
echo $html->link('add', array('controller'=>'comments', 'action'=>'add', array('post_id'=>$post_id, 'noch_was'=>$noch_was)))
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Werte automatisch in Add-Formular eintragen

Beitragvon euromark » Di 29. Dez 2009, 14:19

nein, die werden direkt mit ins array gegeben!

beispiel mit pass parametern noch obendrauf:
Code: Alles auswählen
echo $html->link('add', array('controller'=>'comments', 'action'=>'add', 'post_id'=>$post_id, 'noch_was'=>$noch_was, $pass1, $pass2, ...))
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Werte automatisch in Add-Formular eintragen

Beitragvon mbrod » Di 29. Dez 2009, 14:33

Ja super! Vielen Dank. Wieder was begriffen.
mbrod
 
Beiträge: 193
Registriert: Mi 20. Mai 2009, 18:09
Wohnort: Frankfurt am Main
CakePHP-Version: 1.3.8
OS: Mac OS X

Re: Werte automatisch in Add-Formular eintragen

Beitragvon ckay » Di 29. Dez 2009, 16:08

Erst mal Danke für die schnellen Antworten. Meine Vorgehensweise bis jetzt: Ich schicke einfach die Variable des 'posts' über den Controller mit. Die Variable lese ich per $this->params('pass') wieder aus. Das ganze ergibt ein Array
Code: Alles auswählen
Array
(
    [0] => 2
)
 

Das könnte ich selbstverständlich auch über ein named parameter machen, aber ich übergebe nur eine Variable pro Aufruf, nämlich die jeweilige 'post_id'. Soweit so gut.
Ich bekomme aber einfach nicht die id, in dem Fall '2' in das hidden field 'post_id' des Add-Formulars geschrieben...

Gruß ckay
ckay
 
Beiträge: 7
Registriert: Sa 5. Dez 2009, 11:45
CakePHP-Version: 1.2.5
OS: MacOS X 10.5.5

Re: Werte automatisch in Add-Formular eintragen

Beitragvon euromark » Mi 30. Dez 2009, 00:28

sowas wird im controller gemacht
und zwar statt dem POST-block!
Code: Alles auswählen
        if (!empty($this->data)) {
            $this->Video->create();
            if ($this->Video->save($this->data)) {
                ...
                # redirect
            } else {
                $this->flashMessage(__('record add not saved', true),'error');
            }
        } else {
            $this->data['Video']['active'] = 1; # Defaults hier hin - also aus deinen params!!!
        }
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows


Zurück zu Controller

Wer ist online?

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

cron