Pfad-Breadcrumbs

Unterstützung der Daten-Formatierung in den Views (DRY)

Pfad-Breadcrumbs

Beitragvon pheelix am Do 20. Aug 2009, 10:50

Hi,
wie die Überschrift schon sagt, möchte ich gern Pfad-Breadcrumbs in meinem Projekt nutzen (Keine Location- oder Attribut-Breadcrumbs).

Aber entweder versteh ich die Arbeitsweise falsch oder ich hab etwas vergessen.
Ich nutze in den Controllern den HTML-Helper.

Also hab ich folgendes getan:
In meinem default.thtml-Layout an der Stelle an der ich die Ausgabe haben möchte, habe ich
Code: Alles auswählen
<?php echo __("You are here: ") . $html->getCrumbs(); ?>

eingefügt.

Und dann in jeden View eine Zeile
Code: Alles auswählen
<?php $html->addCrumb('Titel der Seite'); ?>

eingefügt.

Das Problem ist, dass nur der Breadcrumb des aktuellen Views angezeigt wird.

Zum Beispiel:
Auf der Startseite erscheint
You are here: Index

dann klickt man auf einen Link und es zeigt an
You are here: Pools

und dann auf einen weiterführenden Link und es erscheint
You are here: Edit Pool


Aber wie der Name Pfad-Breadcrumbs/Path-Breadcrumbs impliziert, will ich erreichen, dass die Breadcrumbs der besuchten Seiten aneinandergereiht erscheinen

Zum Beispiel
You are here: Index >> Pools >> Edit Pools


Kann mir jemand einen Hinweis geben?

TIA,
pheelix
pheelix
 
Beiträge: 2
Registriert: Do 20. Aug 2009, 10:14
Wohnort: Dresden
CakePHP-Version: 1.2.4.
OS: Debian/Windows 7

Re: Pfad-Breadcrumbs

Beitragvon euromark am Do 20. Aug 2009, 12:59

das ist wie wenn man den zauberstab schwingt und glaubt, das auto bewegt sich von alleine^^

schau dir halt mal an, wie die breadcrumbs funzen in dem html-helper
dann wird dir schnell klar, dass du ALLE einzelnen "elemente" in der reihenfolge hinzufügen musst, in der du sie anzeigen willst
und zwar in "jedem" view getrennt

das wäre die "native" arbeitsweise des helpers
natürlich kann man mit dem ein oder anderen trick das ganze tweaken
aber von allein wird es jedenfalls nicht sein standardverhalten ändern

also der heiße tipp des heißesten tags des jahres:
wenn die doku nichts verrät, einfach mal den code inspizieren


und nach dem theoretischen nun zum praktischen:
die einfachste möglichkeit, es nicht hardcodiert in den views, sondern dynamisch zu machen, ist es via "navigation"-model eine "navigationsliste mit hirarchie" anzulegen (mehrere ebenen tief).
1.
per "controller-actions auslesen"-script alle methoden extrahieren und der liste anhängen.

2.
mit JS, AJAX und CO kann man sehr einfach per drag and drop sich die liste zurechtlegen
und dies dann ausparsen auf urls bezogen (oder auf controller/action paare) und in ein file speichern
(davon kann man später evtl schneller auslesen als von der DB - natürlich kann man auch immer frisch von der DB die inhalte ziehen)

3
dann kann man jeweils mit
if (isset($navi[$key])) {} die korrekte breadcrumb zum aktuellen view finden und
die untergeordeten elemente nacheinander auslesen, in den helper stecken und die breadcrumb erzeugen

das praktische hierbei:
man verknüpft die navigation direkt mit der breadcrumb - ändert sich das eine, sollte sich ja meistens auch das andere ändern (breadcrumb stellt ja den navigationspfad dar normalerweise)

PS: all diese ideen habe ich schonmal vor nem jahr gepostet: HIER
Zuletzt geändert von euromark am Do 20. Aug 2009, 18:28, insgesamt 1-mal geändert.
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: Pfad-Breadcrumbs

Beitragvon pheelix am Do 20. Aug 2009, 13:23

danke schonmal,
wenn ich das in deinem alten beitrag richtig interpretiere, würde es mir bei den breadcrumbs immer nur den pfad innerhalb eines models/controllers anzeigen.
/home/users/edit/3

0 -- /home/users/edit (User editieren)
1 -- /home/users (User)
2 -- /home (Home)


Das trifft dann aber nicht die Definition von Path-Breadcrumbs zu.

Es könnte z.B. so aussehen:
0 -- /home/pools/view
1 -- /home/pools/edit
2 -- /home/pools/view
3 -- /home/topics/view
4 -- /home/topics/edit


und dann als Breadcrumb
View Pools >> Edit Pool >> View Pools >> View Topics >> Edit Topic


Deswegen denke ich mittlerweile, dass ich mir am besten selbst eine Funktion schreibe, die mir in den Breadcrumbs die letzten fünf besuchten Seiten ausgibt.

PS: ich hab deinen "alten" beitrag mit der hilfe der suchfunktion nicht gefunden, weil in dem titel 'breadcrump' steht.
pheelix
 
Beiträge: 2
Registriert: Do 20. Aug 2009, 10:14
Wohnort: Dresden
CakePHP-Version: 1.2.4.
OS: Debian/Windows 7

Re: Pfad-Breadcrumbs

Beitragvon euromark am Do 20. Aug 2009, 18:27

nein, nicht ganz...
man "kann" es an die actions binden
aber es spricht doch nichts dagegen, die navigation entsprechend den breadcrumbs anzulegen
es kann ja auch nur eine "dummy navi" sein, die nirgendwo im einsatz ist, sondern einzig und allein zur generierung der Breadcrumb gebraucht wird

ja, sry
ich sollte den rechtschreibfehler mal rausnehmen^^
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows


Zurück zu Helper

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron