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 –
Listing 5) fällt auch äußerst
mager aus:
<?phpclass FeedItemsController extends AppController {var $name = 'FeedItems';var $scaffold;}?>
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):
<?phpclass FeedsController extends AppController {var $name = 'Feeds';var $helpers = array('Html', 'Form' );function index() {$this->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');}}}?>
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.




