Teil 4: PHP-Frameworks Teil 9 - Flow 3
- PHP-Frameworks Teil 9 - Flow 3
- Teil 2: PHP-Frameworks Teil 9 - Flow 3
- Teil 3: PHP-Frameworks Teil 9 - Flow 3
- Teil 4: PHP-Frameworks Teil 9 - Flow 3
- Teil 5: PHP-Frameworks Teil 9 - Flow 3
Damit die Framework-Daten auch in das Repository gelangen, benötigen Sie eine Repository-Klasse. Diese legen Sie im Verzeichnis Classes/Domain/Repository an. Datei und Klasse heißen FrameworkRepository, die Datei mit der Endung .php. Sie benötigen für dieses Beispiel keinen individuellen Code, s...
Damit die Framework-Daten auch in das Repository gelangen, benötigen Sie eine Repository-Klasse. Diese legen Sie im Verzeichnis Classes/Domain/Repository an. Datei und Klasse heißen FrameworkRepository, die Datei mit der Endung .php. Sie benötigen für dieses Beispiel keinen individuellen Code, sondern können von der Repository-Klasse von Flow3 erben:
<?php
declare(ENCODING =
'utf-8');
namespace F3\Frame
works\Domain\
Repository;
/**
* Ein Repository für unsere Frameworks
*/
class FrameworkRepository extends \
F3\Flow3\Persistence\Repository {
}
?>
Ausgabe
Damit ist die Model-Schicht abgeschlossen. Nun gilt es, das Modell zu befüllen und auszugeben. Dafür dient uns für den Anfang der StandardController aus dem Verzeichnis Classes/Controller unseres Frameworks-Pakets. Hier müssen Sie das FrameworkRepository einfügen:
/**
* @var F3\Frameworks\Domain\
Repository\FrameworkRepository
* @inject
*/
protected $frameworkRepository;
Dieser Einfügevorgang heißt Code Injection. Sie erkennen das am Schlüsselwort inject. Das heißt, dass der benötigte Code woanders definiert und dann an der gewünschten Stelle verwendet wird. Die zentrale Verwaltung übernimmt das Framework. Zum Testen benötigen Sie ein einzelnes Element für unsere Liste.

Das erzeugen Sie in der createAction. Das Objekt wird als Framework- Model-Objekt angelegt, mit Identifier, Namen und Lizenz befüllt und dann zum Repository hinzugefügt:
/**
* Element erstellen
*
* @return void
*/
public function createAction() {
$framework = $this->objectFactory->
create('F3\Frameworks\Domain\Model\
Framework');
$framework->setIdentifier('1');
$framework->setName('Flow3');
$framework->setLicence('GPL');
$this->frameworkRepository->
add($framework);
$this->redirect('index');
}
Am Schluss leitet die create-Action auf die index-Action weiter. Diese wiederum sorgt für die Ausgabe. Im vorliegenden Fall geschieht das in der einfachsten Form direkt, also ohne View. Hier kommt also auch kein Fluid-Template zum Einsatz.
Der Zugriff auf das Repository selbst erfolgt mit der Methode findAll(). Diese und andere Methoden der Repository-Klasse finden Sie in der Flow3-Referenz. Anschließend können Sie mit einer einfachen Schleife alle zurückgelieferten Frameworks durchgehen und entsprechend das Ergebnis in einer Tabelle ausgeben:
/**
* Index action
*
* @return string
*/
public function indexAction() {
$frameworks = $this->
frameworkRepository->findAll();
$ausgabe = '<table border="1"
cellpadding="5">';
$ausgabe .= '<tr><th>ID</th><th>
Framework</th><th>Lizenz</th></tr>';
foreach ($frameworks as $framework) {
$ausgabe .= '<tr>';
$ausgabe .= '<td>' . $framework->
getIdentifier() . '</td>';
$ausgabe .= '<td>' . $framework->
getName() . '</td>';
$ausgabe .= '<td>' . $framework->
getLicence() . '</td>';
$ausgabe .= '</tr>';
}
$ausgabe .= '</table>';
return $ausgabe;
}