Darstellung von Knoten mit Trennung zwischen view und Code

17/12/2015 - 13:44 von Jan Novak | Report spam
Hallo,

ich möchte eine Baumstruktur ausgeben (im einfachsten Fall mit
<ul> und <li>.


class Groups{
...

public function ceateTree($groups,$parent_id=0){
foreach($groups as $group){
if($group->getPrimaryGroup()$parent_id){
echo '<li>', $group->getName();
this->ceateTree($groups,$group->getId());
echo '</li>';
}
}
}
}
...
}

Ich habe meinen Code und meine Ausgaben in getrennten Dateien stehen.
Der View ist eine "dumme" HTML Datei, in welcher nur Anweisungen wie zum
Beispiel
<?php echo $this->WasAuchImmer ?>
stehen.

Meine Frage ist nun folgende:
Wie kann ich die selbstaufrufende Funktion "createTree" in den HTML View
einbetten, ohne dort wieder viel PHP Code haben zu müssen?
Oder geht es eben nicht anders und die createTree Funktion muss in die
HTML Datei?

Jan
 

Lesen sie die antworten

#1 Stefan+Usenet
17/12/2015 - 17:01 | Warnen spam
On Thu, 17 Dec 2015 13:44:51 Jan Novak wrote:
class Groups{
...

public function ceateTree($groups,$parent_id=0){
foreach($groups as $group){
if($group->getPrimaryGroup()$parent_id){
echo '<li>', $group->getName();
this->ceateTree($groups,$group->getId());
echo '</li>';
}
}
}
}
...
}

Ich habe meinen Code und meine Ausgaben in getrennten Dateien stehen.
Der View ist eine "dumme" HTML Datei, in welcher nur Anweisungen wie zum
Beispiel
<?php echo $this->WasAuchImmer ?>
stehen.



So weit, so gut - aber wenn Du Views verwendest, wieso hast Du dann
echo-Befehle in Deinem Code stehen. Statt dessen empfiehlt sich in
einem ersten Schritt z.B. so etwas:

#v+
public function createTree($groups, $parent_id=0) {
$string = '';
foreach ($groups as $group) {
$string = '<li>' . $group->getName();
$string .= $this->createTree($groups, $group->getId());
$string .= '</li>';
}
return $string;
}
#v-

Wie kann ich die selbstaufrufende Funktion "createTree" in den
HTML View einbetten, ohne dort wieder viel PHP Code haben zu
müssen?



In Deinem View musst Du nun $groups zur Verfügung haben und kannst
danach:

#v+
<?php echo $this->createTree($groups); ?>
#v-

schreiben (wobei mir nicht ganz klar ist, wo der Unterschied
zwischen $this und $groups sein soll, und ob $groups überhaupt
benötigt wird; aber das musst Du selbst wissen).

In einem zweiten Schritt würde ich dann auch für den inneren
HTML-Code "<li>$name $subtree</li>" noch ein Template schreiben
und aus der Funktion heraus aufrufen, damit Du in der Programmlogik
am Ende kein HTML mehr hast.

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Der grause Freund kauft Stefan. Wer noch?
(Sloganizer)

Ähnliche fragen