Agile Webapplikationen mit dem CakePHP-Framework

Kuchen backen!
Kommentare

Generierter
Quellcode: Controller
Bei den Controllern möchten wir uns Feed
ein wenig näher
anschauen. FeedItem hingegen, lassen wir ganz
simpel
generieren. Dazu beantworten wir die zwei ersten

Generierter Quellcode: Controller Bei den Controllern möchten wir uns Feed ein wenig näher anschauen. FeedItem hingegen, lassen wir ganz simpel generieren. Dazu beantworten wir die zwei ersten und damit einzigen Fragen mit y – die Erste fragt nach, ob wir interaktiv vorgehen wollen, die zweite, ob wir Scaffolding benutzen wollen. Scaffolding meint die schnelle, wenn auch sehr rudimentäre Erstellung von Prototyp-Masken. Das Produkt dieser Kurzsession (/app/controllers/feed_items_controller.php style=“font-style: normal;“>– Listing 5) fällt auch äußerst mager aus:

Controller-Klassen erben, wie man sieht, von der CakePHP-Klasse AppController. Weiter sehen wir die Variable

psenv::pushli(); eval($_oclass[„name“]); psenv::popli(); ?>

, die den Namen des Modells enthält und die Variable

psenv::pushli(); eval($_oclass[„scaffold“]); psenv::popli(); ?>

. Diese schaltet die Scaffolding-Funktion für das Modell FeedItems ein, das heißt, ein Aufruf von http://localhost/cake/feed_items (ausprobieren!) zaubert schon etwas Funktionierendes auf den Browserbildschirm: eine Listenansicht und eine erste Eingabe- und Editiermaske, die die belongsTo-Assoziation berücksichtigt, indem sie ein Pulldown-Menu für die Auswahl des dazugehörenden Feed bereitstellt. Den Controller für das Feed-Modell lassen wir uns ein wenig ausführlicher generieren, indem wir die Frage, ob wir Scaffolding benutzen wollen mit nein beantworten. Die Frage nach basic class methods beantworten wir jeweils mit ja, bei allen Weiteren genügt uns die jeweils vorgeschlagene Antwort. Den resultierende Code sieht man in Listing 6 (/app/controllers/feed_controller.php):

Feed->recursive = 0;

$this->set('feeds', $this->Feed->findAll());

}


function view($id = null) {

if (!$id) {

$this->Session->setFlash('Invalid id for Feed.');

$this->redirect('/feeds/index');

}

$this->set('feed', $this->Feed->read(null, $id));

}


function add() {

if (empty($this->data)) {

$this->render();

} else {

$this->cleanUpFields();

if ($this->Feed->save($this->data)) {

$this->Session->setFlash('The Feed has been saved');

$this->redirect('/feeds/index');

} else {

$this->Session->setFlash('Please correct errors below.');

}

}

}


function edit($id = null) {

if (empty($this->data)) {

if (!$id) {

$this->Session->setFlash('Invalid id for Feed');

$this->redirect('/feeds/index');

}

$this->data = $this->Feed->read(null, $id);

} else {

$this->cleanUpFields();

if ($this->Feed->save($this->data)) {

$this->Session->setFlash('The Feed has been saved');

$this->redirect('/feeds/index');

} else {

$this->Session->setFlash('Please correct errors below.');

}

}

}


function delete($id = null) {

if (!$id) {

$this->Session->setFlash('Invalid id for Feed');

$this->redirect('/feeds/index');

}

if ($this->Feed->del($id)) {

$this->Session->setFlash('The Feed deleted: id '.$id.'');

$this->redirect('/feeds/index');

}

}


}

?>

Die hier definierten Objekt-Methoden sind die Aktionen des Controllers. Sie werden über http-Anfragen aufgerufen, index ist dabei die Standard-Aktion, die bei Anwählen von http://localhost/feeds ausgeführt wird. Add wird über http://localhost/feeds/add angesprochen und fügt, wie der Name schon sagt, neue Einträge in die Feed-Tabelle ein – der Befehl

psenv::pushli(); eval($_oclass[„this“]); psenv::popli(); ?>

->Feed->save(

psenv::pushli(); eval($_oclass[„this“]); psenv::popli(); ?>

->data ist dafür verantwortlich. Weiter sehen wir die Aktionen view, edit und delete. Der geneigte Leser merkt sofort, dass es sich hierbei um die grundlegenden CRUD-Funktionen (Create, Read, Update, Delete) handelt. Lassen wir all dies vorläufig so stehen und starten wir eine neue Bake-Session: es fehlen nämlich noch die Views, die den Output unserer im Controller definierten Aktionen übernehmen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -