Welcome to the Cookbook

loading...

10.1.7 Erstellen eines Post-Controllers

Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:

Mehr Informationen zu Übersetzungen

Als Nächstes erstellen wir einen Controller für unsere Artikel. Der Controller ist der Ort, an dem die gesamte Anwendungslogik für die Interaktion von Artikeln implementiert wird. Zusammengefasst heißt das, dass dort auf die entsprechenden Model-Klassen zugegriffen und alle Arbeit bezüglich der Blogartikel (Hinzufügen, Löschen, ..) geleistet wird. Wir werden diesen neuen Controller in der Datei posts_controller.php im Verzeichnis /app/controllers abspeichern. Der PostsController sollte folgendermaßen aussehen:

<?php
class PostsController extends AppController {

	var $name = 'Posts';
}
?>
  1. <?php
  2. class PostsController extends AppController {
  3. var $name = 'Posts';
  4. }
  5. ?>

Lass uns nun eine Aktion zu unserem Controller hinzufügen. Aktionen repräsentieren häufig eine einzige Funktion oder Schnittstelle einer Anwendung. Ruft ein User zum Beispiel den URL www.example.com/posts/index auf (was gleichbedeutend mit www.example.com/posts/ ist), könnte er eine Auflistung der Blogartikel erwarten. Der entsprechende Code für eine solche Anzeige würde so aussehen:

<?php
class PostsController extends AppController {

	var $name = 'Posts';

	function index() {
		$this->set('posts', $this->Post->find('all'));
	}
}
?>
  1. <?php
  2. class PostsController extends AppController {
  3. var $name = 'Posts';
  4. function index() {
  5. $this->set('posts', $this->Post->find('all'));
  6. }
  7. }
  8. ?>

Lass mich die Aktion ein klein wenig näher erklären. Indem man die Methode index() im PostsController definiert, haben User die Möglichkeit, auf die Anwendungslogik, die in dieser Methode implementiert ist, über den Aufruf von www.example.com/posts/index zuzugreifen. Definieren wir eine Methode namens foobar(), so haben User gleichermaßen die Möglichkeit über den Aufruf von www.example.com/posts/foobar auf die in dieser Methode enthaltenen Logik zuzugreifen.

Es mag vorkommen, dass du die Versuchung verspürst, deinen Controllern und action-Methoden gewisse Namen zu geben, um entsprechende, spezielle URLs zu erhalten. Widerstehe der Versuchung! Folge den Namenskonventionen von CakePHP (Namen von Controllern im Plural, etc.) und erstelle lesbare und verständliche action-Namen. Du hast die Möglichkeit mit Hilfe von Routen, auf die später noch eingegangen wird, URLs nach deinen Wünschen zu erstellen und auf existierenden Code abzubilden.

Die einzelne Anweisung in der Aktion verwendet set() um Daten vom Controller zur View (welche wir als Nächstes erstellen werden) zu übergeben. Die Zeile weist der View-Variablen 'posts' den Rückgabewert der Methoden find('all') aus dem Post-Model zu. Unser Post-Model ist automatisch über die Variable $this->Post verfügbar, da wir die Namenskonvetionen von CakePHP eingehalten haben.

Weitere Informationen über Controller in CakePHP findet man im Kapitel "Entwickeln mit CakePHP" in der Sektion "Controller".