CodeIgniter – Erstellung einer Applikation
Im zweiten Artikel über CodeIgniter, kurz CI genannt, werden wir uns der Praxis zuwenden und ein Applikation erstellen.
Ich möchte mich in diesem Beispiel an der bestehenden Dokumentation zu CI orientieren und ein Blog erstellen.
Installation
Wenn man andere Frameworks kennt, erwartet man nun eine mehrseitige Anleitung. Bei CI sind dazu aber nur einige wenige Schritte notwendig.
- Lade dir die aktuelle Version von codeigniter.com herunter.
- Entpacke die Zip Datei. Du erhältst die folgende Verzeichnisstruktur:
- Lade die Datei
index.php
und das Verzeichnissystem
auf deinen Server.user_guide
kannst du, wenn du magst, natürlich ebenfalls auf deinen Server laden. - Sinnvollerweise verschiebst du dabei das Verzeichnis
application
aus demsystem
Verzeichnis, so dass es direkt neben der Index.php liegt. CI findet das Verzeichnis auch dort. - Das Verzeichnis
system/scaffolding
werden wir nicht benötigen und sollte vor dem Livebetrieb immer gelöscht werden. In Version 2 wird es nicht mehr vorhanden sein. - Die wichtigste Konfigurationsdatei ist unter
application/config/config.php
zu finden. Öffne diese Datei und ändere die Zeile$config['base_url'] = "http://example.com/";
sodass sie deiner aktuellen Konfiguration entspricht. - Nun musst du nur noch deinem Server das Recht geben, die folgenden Verzeichnisse zu ändern:
- system/cache
- system/logs
- Wenn du nun auf das Verzeichnis zugreifst, in dem die
index.php
liegt, bekommst du bereits die „Welcome to CodeIgniter!“ Seite zu sehen:
Datenbank
Als erstes werden wir eine Datenbank anlegen. Sie bekommt den Namen „blog“ und enthält die folgende Tabelle:
CREATE TABLE entries ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(100) NOT NULL, body text NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Als nächstes solltest du deine Datenbankeinstellungen in der Datei application/config/database.php
eintragen.
Um die Datenbank Klasse automatisch zu laden aktiverien wir diese in application/config/autoload.php
:
$autoload['libraries'] = array('database');
Der Controller
Wir erstellen eine Datei mit dem Namen blog.php
im Verzeichnis application/controllers
:
<?php
class Blog extends Controller
{
function index()
{
echo 'Hello world';
}
}
?>
Wenn wir nun auf index.php/blog
zugreifst, wirst du „Hello world“ zu sehen bekommen.
Um diesen Controller zum Standard zu machen ändern wir in der application/config/routes.php
den Eintrag:
$route['default_controller'] = "welcome";
in:
$route['default_controller'] = "blog";
Die View
Wir erstellen nun eine Datei mit dem Namen blog_view.php
im Verzeichnis application/views
:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
</body>
</html>
Im Controller ersetzen wir:
echo 'Hello world';
gegen:
$data[‚title‘] = ‚Blog‘;
$this->load->view(‚blog_view‘, $data);
Die index.php
sieht nun folgendermaßen aus:
Das Array $data
dient dazu, Daten an die View zu übergeben.
Diese können dann über den Schlüsselnamen – in dem Fall $title
– angesprochen werden.
Man könnte auch short tags <? ?>
in der View verwenden, jedoch muss das dann entweder vom
System unterstützt werden, oder $config['rewrite_short_tags'] = true;
in
application/config/config.php
aktiviert werden.
CI bietet auch einen Template Parser an,
weiters ist es möglich andere Template Engines wie zum Beispiel Smarty, TinyButStrong und so weiter zu verwenden.
Das Model
Als letzten Punkt dieser kurzen Einführung gehen wir noch eine Model an.
Dazu erstellen wir eine Datei mit dem Namen entries_model.php
im Verzeichnis application/models
:
<?php
class Entries_model extends Model
{
function get_list()
{
return $this->db->select(‚title, body‘)->get(‚entries‘)->result();
}
}
?>
Nun müssen wir das Model vom Controller aus ansprechen. Wir übergeben auch das Ergebnis an die View:
<?php
class Blog extends Controller
{
function index() {
$this->load->model(‚Entries_model‘, ‚entries‘);
$data[‚entries‘] = $this->entries->get_list();
$data[‚title‘] = ‚Blog‘;
$this->load->view(‚blog_view‘, $data);
}
}
?>
Als letzten Schritt fügen wir dies der View hinzu:
<?php foreach($entries as $entry): ?>
<h2><?php echo $entry->title; ?></h2>
<p><?php echo $entry->body; ?></p>
<?php endforeach; ?>
Wenn wir schließlich ein paar Testdaten in die Tabelle einfügen erhalten wir folgende Ausgabe:
Ich wünsche viel Spass mit CodeIgniter und Verweise abschließend noch einmal auf den User Guide.
interessanter Artikel, aber leider sehe ich keines der Bilder
Danke für den Artikel.
Aber auch ich sehe keine Bilder.
Also bei mir sind da gar keine Bilder.
Sehe auch keine Bilder :/
Mist. Werde ich versuchen so schnell wie möglich zu fixen! Bin aber grad abreiten, kann also nichts gerantieren. Aber vielleicht verzeit ihr mir das am 1. April.
also ich find die Bilder sehr anschaulich
Na, also in dem was ich dem Nils geschickt hab, waren schon ein paar Bilder drinnen 😉
Die sind jetzt drinnen
Schön, dass auch Frameworks jenseits von Zend, Cake, Symfony hier zu finden sind.
Ich würde gerne eine objektiven Vergleich zwischen CI und Kohana lesen.
Ich persönlich würde ja PHP5 vorziehen. Zumal 4 ja doch sehr 90er Jahre ist. 😉
Leider findet man im Netz fast nur Vergleiche welche doch sehr polarisierend sind.
Also, wer so etwas gefunden hat, nur her mit den Links.
… oder noch besser hier im Blog.
Sehr gut geschrieben 😉
Vielleicht wenn du noch einen Artikel zu CI schreiben willst würde ich vielleicht noch den Templates Parser einbringen.
Ich glaube hätte ich nicht schon seit ein paar Monaten würde mit CI gearbeitet würde ich es mir JETZT genauer anschauen, also hast echt gut geschrieben 😉
LG
@MBa Zu PHP 4 habe ich eh bereits geschrieben. Ich persönlich entwickle grundsätzlich nur mehr >=5.2, da ich das DateTime Objekt doch sehr schätze. Ich schätze halt die gute Dokumentation von CI. Auch ist der Code meiner Meinung nach gut überschaubar, wodurch man noch schnell selbst etwas am Core ändern/hinzufügen kann.
@Bennet Matschullat Ich hab mir noch überlegt, später mal ein paar praktische Tipps zu geben. Den Template Parser nutze ich aber nicht, da ich einfach Smarty/Dwoo gewöhnt bin. PS: Danke
es zwingt euch ja keiner im Php 4 Stil zu programmieren…..
Es gibt eine Template Library von Phil Sturgeon. Sollte man sich auf jeden Fall anschauen.
Hallo zusammen,
ich bin erstaunt, funktioniert bestens, alles klappt so wie beschrieben. Werd ich mir genauer anschauen.