Logo: deam.org

Posts Tagged ‘PHP/ PHP-Frameworks/ CakePHP’

Core Helpers: HTML

Friday, October 31st, 2008

Ich habe zwar in den letzten Tagen sehr viele graue Haare auf Grund von HABTM bekommen, aber das ist ein Thema für einen separaten Post. Heute gibt es wieder eine undokumentierte Kleinigkeit: TD-Optionen bei tableCells.

In der aktuellen Doku steht lediglich der Teil  mit den TR-Optionen drin. Das man aber auch TD’s mit zusätzlichen Angaben versehen kann, steht da leider nicht drin. Erst durch das Ticket https://trac.cakephp.org/ticket/2406 hab ich herausgefunden das es diese (lebens-)notwendige Funktion gibt :-)

Ist eigentlich ganz einfach – das bisherige Beispiel:

<?php echo $html->tableCells(array(
array('Jul 7th, 2007', 'Best Brownies', 'Yes'),
array('Jun 21st, 2007', 'Smart Cookies', 'Yes'),
array('Aug 1st, 2006', 'Anti-Java Cake', 'No'),
));
?>

//Output
<tr><td>Jul 7th, 2007</td><td>Best Brownies</td><td>Yes</td></tr>
<tr><td>Jun 21st, 2007</td><td>Smart Cookies</td><td>Yes</td></tr>
<tr><td>Aug 1st, 2006</td><td>Anti-Java Cake</td><td>No</td></tr>

Und das ist meine kleine Ergänzung für die CakePHP-Doku:

<?php echo $html->tableCells(array(
array('Jul 7th, 2007', array('Best Brownies', array('style'=>'font-weight:bold;')) , 'Yes'),
array('Jun 21st, 2007', 'Smart Cookies', 'Yes'),
array('Aug 1st, 2006', 'Anti-Java Cake', array('No', array('style'=>'background-color:#ff0000;'))),
));
?>

//Output
<tr><td>Jul 7th, 2007</td><td style="font-weight:bold;">Best Brownies</td><td>Yes</td></tr>
<tr><td>Jun 21st, 2007</td><td>Smart Cookies</td><td>Yes</td></tr>
<tr><td>Aug 1st, 2006</td><td>Anti-Java Cake</td><td style="background-color:#ff0000;">No</td></tr>

Es gibt noch einen count-Parameter, den ich mir aber noch nicht näher angesehen habe.
Das man <td>’s also auch direkt mit Attributen versehen kann, macht die ganze Sache dann doch recht elegant.

Tags: ,
Posted in PHP/ PHP-Frameworks/ CakePHP | Comments Off

codeBlock und object: JSON mit CakePHP

Wednesday, October 15th, 2008

Mit $javascript->codeBlock lässt sich recht elegant Javascript-Code einbetten (vor allem interessant, wenn man die ein oder andere Referenzinformation für eine JS-Funktion zur Verfügung stellen will – und das ohne AJAX).

$javascript->codeBlock(“alert(‘hallo’);”, array(‘inline’ => false));

Das ‘inline’ => false ist Gold wert. Hat man in seinem default.ctp schön brav <?php echo $scripts_for_layout ?> in den <head> geschrieben, dann wird der JS-Code nicht mitten in die Seite “geschmiert”, sondern schön in den <head>-Bereich des Dokuments platziert. Sowas sorgt für Ordnung.

$javascript->object($this->viewVars['adressenstatus'], false, ‘adressenstatus = ‘, ‘;’);

Die object-Funktion macht aus einem Array entsprechend JSON – mit allem was dazugehört. In diesem Fall beziehe ich mich auf ein zweidimensionales Array, welches ich sowieso für die Ausgabe eines Popups brauche. Das $this->viewVars['adressenstatus'] wird mit einem Präfix ‘adressenstatus = ‘ und einem Suffix ‘;’ versehen. Und schon habe ich ein schönes Javascript-Objekt. Das sieht dann in etwa so aus:

adressenstatus = {"Mitgliedschaft":{"1":"Plus-Mitgliedschaft","2":"Standard-Mitgliedschaft","3":"Gruppen-Mitgliedschaft"},"sonstiges":{"0":"Neuanmeldung","4":"Interessent","5":"Multiplikator","6":"Referent","7":"ruhende Mitgliedschaft","8":"Presse\/ \u00d6ffentlichkeitsarbeit\n"}};

Jetzt kombiniere ich beides und schwups hängt das ganze im <head>-Bereich meiner Seite:

$javascript->codeBlock($javascript->object($this->viewVars['adressenstatus'], false, 'adressenstatus = ', ';'), array('inline' => false));

Die Funktion $javascript->object werde ich wohl noch recht oft einsetzen. Vor allem auch in Zusammenhang mit AJAX.

Ziel der Übung von oben ist es bei einem onchange-Event eines Popups entsprechende Formularteile ein- oder auszublenden. Hier macht es imho wenig Sinn mit einem XHTTP-Request zu arbeiten, wenn der Datenumfang des Popups klein ist (in diesem Fall ja nur 9 Datensätze). Da liefert man das Objekt für Javascript einmal im <head> und bezieht sich dann entsprechend darauf.

Tags: , ,
Posted in PHP/ PHP-Frameworks/ CakePHP | 4 Comments »

MVC: ein schöner Gedanke

Friday, September 5th, 2008

Ich verwende die Version 1.2. Aktuell in zwei Varianten mit dem RC2 und einem einigermassen aktuellem NightlyBuild. Ich gehe davon aus, das ich noch eine Weile benötige um richtig drin zu sein und dann sollte ja ggf. schon ein RC3 oder eine Release in Aussicht stehen.

Nach dem Einlesen war mir klar, das ich mit dem 1.1 nicht mehr anfangen will, da hier einige grundlegende Teile fehlen. Zumindest so grundlegendes, dass ich nicht wirklich den Vorteil zu meinem framework gesehen habe. Das entscheidend neue (zumindest für mich) an 1.2 sind die eingebauten Validierungsregeln – das ist in der 1.1er deutlich “schlanker”.

Aber fangen wir doch mal von vorne an: MVC. (more…)

Tags: , , ,
Posted in PHP/ PHP-Frameworks/ CakePHP | 3 Comments »

CakePHP: mal was anderes lernen

Thursday, September 4th, 2008

Das deam.org-Blog wird mit Arbeit eröffnet.

Ich habe über die letzten Jahre ein recht brauchbares framework entwickelt. Ein kleines framework, das den jeweiligen Nutzungsumständen immer gut anzupassen war. Inzwischen ist das Entwickeln aber deutlich komplexer geworden, d.h. es müssen mehrere Leute gleichzeitig arbeiten können. Dabei hat mein framework ein paar Limitierungen – nicht zuletzt in der Dokumentation. Es bedeutet doch relativ hohen Aufwand Dritte einzuführen, mit denen man zum ersten Mal zusammen arbeitet.

Aus diesem Grund habe ich mich entschieden einen neuen Weg zu gehen, oder ihn zumindest zu suchen. Mitte August 2008 hatte ich endlich ein paar Stunden Zeit mit CakePHP zu beginnen. Von allen MVC-ausgerichteten frameworks erscheint mit CakePHP bislang als das am besten “verfügbare” (dazu später noch mehr). Allerdigs bin ich mir zum jetzigen Stand noch nicht sicher, wie viel effektiver ich damit arbeiten kann.

Über die nächsten Wochen bis voraussichtlich Mitte November werde ich versuchen mich in CakePHP einzuarbeiten und mir entsprechendes Handwerkszeug zurecht zu legen. Einen guten Teil davon werde ich in diesem Blog veröffentlichen – in deutsch.

Es gibt eine Menge Quellen, aber im deutschsprachigen Raum ist es etwas mager. Ausserdemist das Thema der richtigen Vorgehensweise (“hänge ich das jetzt ins Model oder mach ich ein Behavior draus?”) auch in der englischen Google-Group nicht immer hinreichend gut zu klären.

Meine Aufgabenstellung ist eine Adressverwaltung, die ich vor mehr als 10 Jahren in PHP geschrieben habe und die immer noch im Einsatz ist. Beim letzten Switch von PHP4 auf PHP5 hat sich bei dieser Verwaltung gezeigt, dass es doch ein kleinwenig zuviel Anpassungen bedingte. Das Projekt ist aber überschaubar genug, um sich nicht an planungstechnischen Details aufhalten zu müssen, aber komplex genug um sich mit CakePHP intensiver beschäftigen zu müssen.

Tags: , ,
Posted in PHP/ PHP-Frameworks/ CakePHP | Comments Off

Blog :: deam.org is proudly powered by WordPress
Entries (RSS) and Comments (RSS).