CakePHP & DIEVOLUTION Blog
Logische Elemente
Wer kennt das Problem nicht, da hat man endlich rausgefunden, dass man bei CakePHP mit Elementen Teil-Ansichten (bei Rails partial-views) erstellen kann und steht nun vor dem Problem, dass man irgendwie in die Datei noch Programmlogik reinbringen will. HTML Codeblöcke sind immer nur so gut wie die Logik dahinter. Da es sich bei Elementen allerdings um eine Art View handelt, ist laut MVC-Prinzip Programmlogik oder gar Datenbankkommunikation im View nicht erlaubt (obwohl mit etwas Frickelei in PHP durchaus möglich).
Die Lösung:
/views/elements/mein_element.ctp
-
<?php $ausgabe_array = $this->requestAction(‘/controller/action’);?>
-
<p>mein HTML Code und vieles mehr</p>
Durch diese wirklich simple Lösung kann man sich jede Funktion in das Element holen und dort für den User aufbereiten.
Einen kleinen Fallstrick gilt es allerdings noch zu umgehen:
Nach meiner Erfahrung (wenn es anders ist, bitte in den Kommentaren posten) muss bei requestAction die benannte Funktion ein return value besitzen. Im Beispiel könnte die Funktion so aussehen:
-
…
-
function view() {
-
$alles = $this->Model->findAll();
-
return $alles;
-
}
-
…
Nun kann man auf den Rückgabewert $alles als $ausgabe_array im Element zugreifen und die tollsten Sachen machen.
Veröffentlicht am Freitag, den 11. Januar 2008 um 09:41 Uhr veröffentlicht
Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.
3 Reaktionen zu “Logische Elemente”
-
Am 11. Januar 2008 um 11:29 Uhr
Top! Danke das du meine Problematik aufgegriffen hast, ich denke jetzt habe ich Elemente besser verstanden, vorallem weiß ich nun wie ich die Programmlogik da rein bekomme und, dass ich mit return die Werte übergeben muss (mit “set” hats bei mir nämlich nie funktioniert).
-
Am 11. Januar 2008 um 11:34 Uhr
Ich helfe doch gerne (hatte allerdings gestern auch genau das Problem mit einer dynamischen Navigation, von daher nicht ganz uneigennützig) -
paul
Am 9. Februar 2008 um 18:54 Uhrfunktioniert
&this->set(’variable’, $this->requestAction(‘/controller/action’));
im controller denn nicht?
Auf einen Blick
Archiv
- Dezember 2008
- November 2008
- Oktober 2008
- August 2008
- Juli 2008
- Juni 2008
- Mai 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
- Oktober 2007
- September 2007
- August 2007
- Juli 2007
- Juni 2007
- Mai 2007
- April 2007
Kategorien
- Allgemein (74)
- Cake vs Rails (3)
- CakePHP (44)
- Meinung (16)
- Projekt (7)
- Rails (6)
- Tipps (29)
- Typo3 (4)
Letzte Einträge:
- 11.04.2007: Neustart
- 11.04.2007: Design Version 1 steht
- 11.04.2007: Blog