Empfehlungen: Erweiterte Suche

In Editpage von A attribute von B anzeigen

Datenbankobjekte strukturieren und validieren

In Editpage von A attribute von B anzeigen

Beitragvon Galdan » Di 24. Jun 2008, 12:07

Hallo zusammen,

ich bin mir nicht sicher ob die Überschrift selbsterklärend ist.

Aber ich hab beispielsweise Mitglieder und Rechnungen. (1 Mitglied -> n Rechnungen)

Wenn ich jetzt eine neue Rechnung anlege bekomme ich eine Dropdownliste mit den IDs der Mitglieder. Hier würde ich aber gerne Vor und Nachname anzeigen.

Geht das?

Gruß
Tom
Galdan
 
Beiträge: 13
Registriert: Di 24. Jun 2008, 08:47

Re: In Editpage von A attribute von B anzeigen

Beitragvon Alex » Di 24. Jun 2008, 12:30

Setze einfach die Variable $displayField in deinem Model.

Code: Alles auswählen
var $displayField = 'Spaltenname';


Hier noch der Eintrag in Manual dazu:
http://book.cakephp.org/view/438/displayfield
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian

Re: In Editpage von A attribute von B anzeigen

Beitragvon Galdan » Di 24. Jun 2008, 15:25

Wunderbar das funktioniert soweit.

Allerdings sind Nach- und Vorname getrennte Felder.

sowas funktioniert leider nicht :-(

Code: Alles auswählen
var $displayField = 'lastname' . ' ' . 'firstname';


gibts ne andere Möglichkeit?

Danke schonmal!

Gruß
Tom
Galdan
 
Beiträge: 13
Registriert: Di 24. Jun 2008, 08:47

Re: In Editpage von A attribute von B anzeigen

Beitragvon Mathias » Di 24. Jun 2008, 16:20

Wie erstellst du denn dein Dropdown-Feld?

Würde nicht eine foreach-Schleife helfen?
Du holst dir die Daten der Mitglieder aus der DB und speicherst sie in members.

In der view (ohne Dropdown-Code):
Code: Alles auswählen

<?php foreach ($members as $member):?>
     <?php echo $member['Member']['lastname'].' '.$member['Member']['firstname'];
<?php endforeach; ?>
 
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: In Editpage von A attribute von B anzeigen

Beitragvon Galdan » Di 24. Jun 2008, 16:43

Momentan sieht mein Dropdown Code wie folgt aus:

Code: Alles auswählen
echo $form->input('member_id');


also nicht sehr komplex ;-)

Alternative wäre, wenn ich mir im Model vom Member ein Pseudoattribut erstelle, dass Vor und Nachnamen enthält. Allerdings weiss ich nicht ob und wie das geht.

Das mit einer foreach schleife ist zwar simple möglich, aber ich denke nicht "best pracitce". Es muss doch für ein solch häufiges "Problem" eine einfache, simple Lösung geben, oder?
Galdan
 
Beiträge: 13
Registriert: Di 24. Jun 2008, 08:47

Re: In Editpage von A attribute von B anzeigen

Beitragvon Alex » Di 24. Jun 2008, 23:08

Hast es mal mit

Code: Alles auswählen
var $displayField = array('lastname','firstname');


probiert? Ich glaube allerdings das sowas noch nicht unterstützt wird. Ich meine sowas mal gelesen zu haben...
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian

Re: In Editpage von A attribute von B anzeigen

Beitragvon Galdan » Mi 25. Jun 2008, 08:37

Nein, haut leider nicht hin.

Also gibts scheinbar keine einfache Lösung?

Trotzdem vielen Dank für eure Hilfe!

Gruß
Tom
Galdan
 
Beiträge: 13
Registriert: Di 24. Jun 2008, 08:47

Re: In Editpage von A attribute von B anzeigen

Beitragvon Alex » Mi 25. Jun 2008, 10:28

Schau dir doch sonst nochmal diese Diskussion an. Dort wird genau dieses Problem bemängelt. Die Lösung die ich für sinnvoll halte ist die mit der afterFind-Methode.

https://trac.cakephp.org/ticket/644
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian

Re: In Editpage von A attribute von B anzeigen

Beitragvon Galdan » Fr 27. Jun 2008, 08:14

Hallo,

ich glaub ich begnüge mich jetzt vorerst erstmal dass ich nur ein Attribut im displayField anzeigen kann.

Danke für die Hilfe :)

Gruß
Tom
Galdan
 
Beiträge: 13
Registriert: Di 24. Jun 2008, 08:47

Re: In Editpage von A attribute von B anzeigen

Beitragvon phyrexianer » Fr 19. Jun 2009, 12:40

hi... also ich habe jetzt hier das gleiche Problem.

ich kann mit afterFind den array erzeugen aber wie bekomme ich den anzuzeigenden Namen bzw. Feld jetzt ist meine Auswahl ?

Code: Alles auswählen

[MODEL]
function afterFind($results) {
         foreach ($results as $n => $data) {
            $results[$n]['Author']['test'] = $data['Author']['forename'] . ' ' . $data['Author']['name'];
        }
        return $results;
    }

[CONTROLLER]
$authors = $this->Publication->Author->find('list');

[VIEW]
echo $form->input('Author');
 


also wenn ich dann in der View statt find('list') , find('all') mache und mir das array ausgeben lasse dann sehe ich das 'test' Feld mit dem gewünschten Inhalt im Array.
Aso die Modellbeziehung zwischen Author und Publication ist HABTM
phyrexianer
 
Beiträge: 30
Registriert: Fr 19. Jun 2009, 10:52


Zurück zu Models

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast