Einrichten einer CakePHP-Anwendung mit LAMP unter Ubuntu 18.04

Der Autor hat dieFree and Open Source Fundausgewählt, um eine Spende im Rahmen desWrite for DOnations-Programms zu erhalten.

Einführung

CakePHP ist ein beliebtes und funktionsreiches PHP-Webframework. Es löst viele der bei der Webentwicklung häufig auftretenden Probleme, z. B. die Interaktion mit einer Datenbank, die Abschirmung gegen SQL-Injektionen und die Generierung von Ansichtscode. Es folgt demmodel-view-controller (MVC) -Muster, das verschiedene Teile der Anwendung entkoppelt und es Entwicklern effektiv ermöglicht, parallel an verschiedenen Teilen der App zu arbeiten. Es bietet auch integrierte Sicherheit und Authentifizierung. Das Erstellen einer einfachen Datenbank-App ist ein nahtloser Prozess, der CakePHP für das Prototyping nützlich macht. Sie können CakePHP jedoch auch verwenden, um vollständig entwickelte Webanwendungen für die Bereitstellung zu erstellen.

In diesem Lernprogramm stellen Sie eine CakePHP-Beispielwebanwendung in einer Produktionsumgebung bereit. Dazu richten Sie eine Beispieldatenbank und einen Beispielbenutzer ein, konfigurieren Apache, verbinden Ihre App mit der Datenbank und deaktivieren den Debug-Modus. Sie können auch den Befehlbakevon CakePHP verwenden, um automatisch Artikelmodelle zu generieren.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, benötigen Sie:

  • Auf einem Server mit Ubuntu 18.04 mit Root-Zugriff und einem Sudo-Konto ohne Root-Zugriff können Sie dies einrichten, indem Siethis initial server setup guide folgen.

  • Ein LAMP-Stapel, der gemäßHow To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 18.04 installiert wurde. Zum Zeitpunkt des Schreibens ist PHP 7.2 die neueste Version.

  • Composer (ein PHP-Paketmanager) ist auf Ihrem Server installiert. Eine Anleitung dazu finden Sie unterHow To Install and Use Composer on Ubuntu 18.04. Sie müssen nur die ersten beiden Schritte dieses Lernprogramms ausführen.

  • Apache mit Let’s Encrypt gesichert. Um diese Voraussetzung zu erfüllen, müssen Sie zuerst virtuelle Hosts einrichten, indem Sie Schritt 5 vonHow To Install Apache on Ubuntu 18.04 ausführen. Sie können dannHow To Secure Apache with Let’s Encrypt on Ubuntu 18.04 folgen, um Apache mit Let's Encrypt zu sichern. Aktivieren Sie bei Aufforderung die obligatorische HTTPS-Umleitung.

  • Ein vollständig registrierter Domainname. In diesem Tutorial werden durchgehendexample.com verwendet. Sie können einen Domain-Namen fürNamecheap kaufen, einen fürFreenom kostenlos erhalten oder den Domain-Registrar Ihrer Wahl verwenden.

  • Die beiden folgenden DNS-Einträge wurden für Ihren Server eingerichtet. Sie könnenthis introduction zu DigitalOcean DNS folgen, um Details zum Hinzufügen zu erhalten.

    • Ein A-Datensatz mitexample.com, der auf die öffentliche IP-Adresse Ihres Servers verweist.

    • Ein A-Datensatz mitwww.example.com, der auf die öffentliche IP-Adresse Ihres Servers verweist.

[[Schritt-1 - Installieren von Abhängigkeiten]] == Schritt 1 - Installieren von Abhängigkeiten

Um sich auf Ihre Anwendung vorzubereiten, installieren Sie zunächst die PHP-Erweiterungen, die CakePHP benötigt.

Aktualisieren Sie zunächst den Paketmanager-Cache:

sudo apt update

CakePHP erfordert die PHP-Erweiterungenmbstring,intl undsimplexml, die Unterstützung für Multibyte-Zeichenfolgen, Internationalisierung und XML-Verarbeitung bieten. Sie habenmbstring als Teil des Composer-Lernprogramms installiert. Sie können die restlichen Bibliotheken mit einem Befehl installieren:

sudo apt install php7.2-intl php7.2-xml -y

Denken Sie daran, dass sich die oben genannten Versionsnummern (7.2) mit neuen PHP-Versionen ändern.

Sie haben die erforderlichen Abhängigkeiten für CakePHP installiert. Jetzt können Sie Ihre MySQL-Datenbank für den produktiven Einsatz konfigurieren.

[[Schritt-2 -—- Einrichten einer MySQL-Datenbank]] == Schritt 2 - Einrichten einer MySQL-Datenbank

Jetzt erstellen Sie eine MySQL-Datenbank, in der Informationen zu den Artikeln Ihres Blogs gespeichert werden. Sie erstellen auch einen Datenbankbenutzer, mit dem Ihre Anwendung auf die Datenbank zugreift. Sie ändern die Datenbankberechtigungen, um diese Aufteilung der Kontrolle zu erreichen. Infolgedessen können schlechte Akteure auch mit Datenbankanmeldeinformationen keine Probleme auf dem System verursachen. Dies ist eine wichtige Sicherheitsmaßnahme in einer Produktionsumgebung.

Starten Sie Ihre MySQL-Shell:

sudo mysql -u root -p

Wenn Sie dazu aufgefordert werden, geben Sie das Kennwort ein, das Sie bei der Erstinstallation von LAMP festgelegt haben.

Als nächstes erstellen Sie eine Datenbank:

CREATE DATABASE cakephp_blog;

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputQuery OK, 1 row affected (0.00 sec)

Ihre CakePHP-App verwendet diese neue Datenbank zum Lesen und Speichern von Produktionsdaten.

Weisen Sie dann MySQL an, die neuecakephp_blog-Datenbank zu bearbeiten:

USE cakephp_blog;

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputDatabase changed

Jetzt erstellen Sie ein Tabellenschema für Ihre Blog-Artikel in dercakephp_blog-Datenbank. Führen Sie den folgenden Befehl aus, um dies einzurichten:

CREATE TABLE articles (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

Sie haben ein Schema mit fünf Feldern erstellt, um Blog-Artikel zu beschreiben:

  • id: ist die eindeutige Kennung eines Artikels, der als Primärschlüssel eingerichtet ist.

  • title: ist der Titel eines Artikels, der als Textfeld mit maximal 50 Zeichen deklariert ist.

  • body: ist der Text des Artikels, der alsTEXT Feld deklariert ist.

  • created: ist das Datum und die Uhrzeit der Erstellung eines Datensatzes.

  • modified: ist das Datum und die Uhrzeit der Änderung eines Datensatzes.

Die Ausgabe ist ähnlich wie:

OutputQuery OK, 0 rows affected (0.01 sec)

Sie haben eine Tabelle zum Speichern von Artikeln in der Datenbankcakephp_blogerstellt. Füllen Sie es als Nächstes mit Beispielartikeln, indem Sie den folgenden Befehl ausführen:

INSERT INTO articles (title, body, created)
    VALUES ('Sample title', 'This is the article body.', NOW());

Sie haben einen Beispielartikel mit einigen Beispieldaten für den Titel und den Nachrichtentext hinzugefügt.

Sie werden die folgende Ausgabe sehen:

OutputQuery OK, 0 rows affected (0.01 sec)

Um die CakePHP-App mit der Datenbank zu verbinden, müssen Sie einen neuen Datenbankbenutzer erstellen und dessen Berechtigungen einschränken:

GRANT ALL PRIVILEGES ON cakephp_blog.* TO 'cake_user'@'localhost' IDENTIFIED BY 'password';

Dieser Befehl gewährt allen Tabellen in der Datenbank alle Berechtigungen.

Denken Sie daran,password durch ein sicheres Passwort Ihrer Wahl zu ersetzen.

Führen Sie die folgenden Schritte aus, um Ihre Datenbank mit den vorgenommenen Änderungen zu aktualisieren:

FLUSH PRIVILEGES;

Sie haben gerade einen neuen Datenbankbenutzer,cake_user, erstellt und die Benutzerberechtigungen nur für die Datenbank voncakephp_blogerteilt, wodurch die Sicherheit erhöht wurde.

Beenden Sie das MySQL-Terminal, indem Sieexit eingeben.

Sie haben eine neue Datenbank mit einem Schema erstellt, diese mit Beispieldaten gefüllt und einen entsprechenden Datenbankbenutzer erstellt. Im nächsten Schritt richten Sie die CakePHP-App selbst ein.

[[Schritt-3 - Erstellen der Blog-Anwendung]] == Schritt 3 - Erstellen der Blog-Anwendung

In diesem Abschnitt verwenden Sie Composer, um eine CakePHP-Beispielanwendung zu installieren. Es ist vorteilhaft, Composer zu verwenden, da Sie CakePHP von Ihrer Befehlszeile aus installieren können und bestimmte Dateiberechtigungen und Konfigurationsdateien automatisch eingerichtet werden.

Navigieren Sie zunächst zum Apache-Webserverordner:

cd /var/www/example.com/html

Apache verwendet dieses Verzeichnis, um Dateien zu speichern, die für die Außenwelt sichtbar sind. Der Benutzer vonrootbesitzt dieses Verzeichnis, sodass Ihr Nicht-Root-Benutzersammy nichts darauf schreiben kann. Um dies zu korrigieren, ändern Sie die Dateisystemberechtigungen, indem Sie Folgendes ausführen:

sudo chown -R sammy .

Sie erstellen jetzt eine neue CakePHP-App über Composer:

composer create-project --prefer-dist cakephp/app cake-blog

Hier haben Siecomposer aufgerufen und angewiesen, ein neues Projekt mitcreate-project zu erstellen. --prefer-dist cakephp/app weistcomposer an, CakePHP als Vorlage mitcake-blog als Namen der neuen Anwendung zu verwenden.

Beachten Sie, dass dieser Befehl einige Zeit in Anspruch nehmen kann.

Wenn Composer Sie auffordert, Ordnerberechtigungen einzurichten, antworten Sie mity.

In diesem Abschnitt haben Sie ein neues CakePHP-Projekt mit Composer erstellt. Im nächsten Schritt konfigurieren Sie Apache so, dass es auf die neue App verweist, die dann in Ihrem Browser angezeigt wird.

[[Schritt 4 - Konfigurieren von Apache, um auf Ihre App zu zeigen]] == Schritt 4 - Konfigurieren von Apache, um auf Ihre App zu zeigen

Jetzt konfigurieren Sie Apache für Ihre neue CakePHP-Anwendung und aktivieren das Überschreiben von.htaccess, was eine CakePHP-Anforderung ist. Dazu müssen die Apache-Konfigurationsdateien bearbeitet werden.

Damit das eigentliche Routing stattfinden kann, müssen Sie Apache anweisen,.htaccess Dateien zu verwenden. Hierbei handelt es sich um Konfigurationsdateien, die sich in den Unterverzeichnissen der Anwendung befinden (sofern erforderlich). Anschließend ändert Apache anhand der Dateien die globale Konfiguration für den angeforderten Teil der Anwendung. Sie enthalten unter anderem Regeln zum Umschreiben von URLs, die Sie jetzt anpassen werden.

Öffnen Sie zunächst die globale Apache-Konfigurationsdatei (apache2.conf) mit Ihrem Texteditor:

sudo nano /etc/apache2/apache2.conf

Suchen Sie den folgenden Codeblock:

/etc/apache2/apache2.conf

...

        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted

...

Ändern SieAllowOverride vonNone inAll wie folgt:

/etc/apache2/apache2.conf

...

        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

...

Speichern und schließen Sie die Datei.

Als Nächstes weisen Sie Apache an, in der CakePHP-Installation auf das Verzeichniswebroot zu verweisen. Apache speichert seine Konfigurationsdateien unter Ubuntu 18.04 in/etc/apache2/sites-available. Diese Dateien steuern, wie Apache Webanforderungen verarbeitet.

Während des vorausgesetzten Tutorials zu Let's Encrypt haben Sie die HTTPS-Umleitung aktiviert. daher nur HTTPS-Verkehr zulassen. Infolgedessen bearbeiten Sie nur die Dateiexample.com-le-ssl.conf, mit der der HTTPS-Verkehr konfiguriert wird.

Öffnen Sie zunächst die Konfigurationsdatei vonexample.com-le-ssl.conf:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Sie müssen nur eine Zeile ändern, dieDocumentRoot einrichtet und Apache mitteilt, von wo aus Inhalte für den Browser bereitgestellt werden sollen. Suchen Sie die folgende Zeile in der Datei:

/etc/apache2/sites-available/example.com-le-ssl.conf

DocumentRoot /var/www/example.com/html

Bearbeiten Sie diese Zeile, um auf die CakePHP-Installation zu verweisen, indem Sie den folgenden hervorgehobenen Inhalt hinzufügen:

/etc/apache2/sites-available/example.com-le-ssl.conf

DocumentRoot /var/www/example.com/html/cake-blog/webroot

Speichern Sie die Datei und beenden Sie den Editor.

Starten Sie anschließend Apache neu, um die neue Konfiguration zu übernehmen:

sudo systemctl restart apache2

Jetzt können Siehttps://your_domain/ in Ihrem Browser besuchen.

CakePHP can’t connect to the database

Sie sehen die standardmäßige CakePHP-Erfolgsseite. Sie werden feststellen, dass ein Block anzeigt, dass Ihre Anwendung keine Verbindung zur Datenbank herstellen kann. Im nächsten Schritt lösen Sie dieses Problem, indem Sie Ihre App mit der Datenbank verbinden.

Sie haben jetzt das Überschreiben von.htaccessaktiviert und Apache auf das richtige Verzeichnis vonwebrootverwiesen.

[[Schritt 5 - Verbinden Ihrer App mit der Datenbank] == Schritt 5 - Verbinden Ihrer App mit der Datenbank

In diesem Abschnitt verbinden Sie Ihre Datenbank mit Ihrer Anwendung, damit Ihr Blog auf die Artikel zugreifen kann. Sie bearbeiten die Standarddateiconfig/app.phpvon CakePHP, um die Verbindung zu Ihrer Datenbank herzustellen.

Navigieren Sie zum App-Ordner:

cd /var/www/example.com/html/cake-blog

Öffnen Sie die Dateiconfig/app.php, indem Sie den folgenden Befehl ausführen:

sudo nano config/app.php

Suchen Sie den BlockDatasources (er sieht folgendermaßen aus):

/var/www/example.com/html/cake-blog/config/app.php

...
    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => 'localhost',
            ...
            //'port' => 'non_standard_port_number',
            'username' => 'cake_user',
            'password' => 'password',
            'database' => 'cakephp_blog',
...

Ersetzen Sie für'username'my_app durch den Benutzernamen Ihres Datenbankbenutzers (in diesem Lernprogramm werden Folgendes verwendet:cake_user),secret durch das Kennwort Ihres Datenbankbenutzers und das zweitemy_app durch das Datenbankname (cakephp_blog in diesem Tutorial).

Speichern und schließen Sie die Datei.

Aktualisieren Sie die App in Ihrem Browser und beobachten Sie die Erfolgsmeldung im AbschnittDatabase. Wenn ein Fehler angezeigt wird, überprüfen Sie Ihre Konfigurationsdatei anhand der vorstehenden Schritte.

CakePHP can connect to the database

In diesem Schritt haben Sie die CakePHP-App mit Ihrer MySQL-Datenbank verbunden. Im nächsten Schritt generieren Sie die Modell-, Ansichts- und Controller-Dateien, die die Benutzeroberfläche für die Interaktion mit den Artikeln bilden.

[[Schritt-6 -—- Erstellen der Artikel-Benutzeroberfläche]] == Schritt 6 - Erstellen der Artikel-Benutzeroberfläche

In diesem Abschnitt erstellen Sie eine gebrauchsfertige Artikelschnittstelle, indem Sie den Befehl CakePHPbakeausführen, mit dem das Artikelmodell generiert wird. In CakePHP werden beim Backen alle erforderlichen Modelle, Ansichten und Steuerungen in einem Grundzustand erstellt, der für die weitere Entwicklung bereit ist. Jede Datenbank-App muss das Erstellen, Lesen, Aktualisieren und Löschen von CRUD-Vorgängen ermöglichen. Daher ist diebake-Funktion von CakePHP nützlich, um automatisch Code für diese Vorgänge zu generieren. Innerhalb weniger Minuten erhalten Sie einen vollständigen Prototyp der App, der zum Eingeben, Speichern und Bearbeiten der Daten bereit ist.

Modelle, Ansichten und Controller beziehen sich auf dasMVC-Muster. Ihre Rollen sind:

  • Modelle repräsentieren die Datenstruktur.

  • Views präsentieren die Daten benutzerfreundlich.

  • Controller agieren auf Benutzerwunsch und dienen als Vermittler zwischen Ansichten und Modellen.

CakePHP speichert seine ausführbare CLI-Datei unterbin/cake. Während es hauptsächlich zum Backen verwendet wird, bietet es eine ganze Reihe anderer Befehle, beispielsweise zum Löschen verschiedener Caches.

Der Befehlbake überprüft Ihre Datenbank und generiert die Modelle basierend auf den gefundenen Tabellendefinitionen. Beginnen Sie mit dem folgenden Befehl:

./bin/cake bake all

Durch Übergeben des Befehlsall weisen Sie CakePHP an, Modelle, Controller und Ansichten gleichzeitig zu generieren.

Ihre Ausgabe sieht folgendermaßen aus:

OutputBake All
---------------------------------------------------------------
Possible model names based on your database:
- articles
Run `cake bake all [name]` to generate skeleton files.

Es hat die Definition vonarticlesin Ihrer Datenbank ordnungsgemäß erkannt und bietet an, Dateien für dieses Modell zu generieren.

Backen Sie es durch Laufen:

./bin/cake bake all articles

Ihre Ausgabe sieht folgendermaßen aus:

OutputBake All
---------------------------------------------------------------
One moment while associations are detected.

Baking table class for Articles...

Creating file /var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Table/empty`

Baking entity class for Article...

Creating file /var/www/example.com/html/cake-blog/src/Model/Entity/Article.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Entity/Article.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Entity/empty`

Baking test fixture for Articles...

Creating file /var/www/example.com/html/cake-blog/tests/Fixture/ArticlesFixture.php
Wrote `/var/www/example.com/html/cake-blog/tests/Fixture/ArticlesFixture.php`
Deleted `/var/www/example.com/html/cake-blog/tests/Fixture/empty`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\ArticlesTable ...

Creating file /var/www/example.com/html/cake-blog/tests/TestCase/Model/Table/ArticlesTableTest.php
Wrote `/var/www/example.com/html/cake-blog/tests/TestCase/Model/Table/ArticlesTableTest.php`

Baking controller class for Articles...

Creating file /var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php
Wrote `/var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php`
Bake is detecting possible fixtures...

...

Baking `add` view template file...

Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp`

Baking `edit` view template file...

Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp`
Bake All complete.

In der Ausgabe sehen Sie, dass CakePHP alle Schritte protokolliert hat, die zum Erstellen einer funktionalen Boilerplate für diearticles-Datenbank erforderlich waren.

Navigieren Sie nun in Ihrem Browser zu Folgendem:

https://your_domain/articles

Sie sehen eine Liste der Artikel in der Datenbank, die eine Zeile mit dem TitelSample Title enthält. Mit dem Befehlbake wurde diese Schnittstelle erstellt, über die Sie Artikel erstellen, löschen und bearbeiten können. Als solches bietet es einen soliden Ausgangspunkt für die weitere Entwicklung. Sie können versuchen, einen neuen Artikel hinzuzufügen, indem Sie auf den LinkNew Articlein der Seitenleiste klicken.

The generated article user interface

In diesem Abschnitt haben Sie Modell-, Ansichts- und Controller-Dateien mit dem Befehlbakevon CakePHP generiert. Sie können jetzt Ihre Artikel erstellen, löschen, anzeigen und bearbeiten. Alle Änderungen werden sofort in der Datenbank gespeichert.

Im nächsten Schritt deaktivieren Sie den Debug-Modus.

[[Schritt-7 -—- Deaktivieren des Debug-Modus-in-Cakephp]] == Schritt 7 - Deaktivieren des Debug-Modus in CakePHP

In diesem Abschnitt deaktivieren Sie den Debug-Modus in CakePHP. Dies ist von entscheidender Bedeutung, da die App im Debug-Modus detaillierte Debugging-Informationen anzeigt, was ein Sicherheitsrisiko darstellt. Sie führen diesen Schritt aus, nachdem Sie die Entwicklung Ihrer Anwendung abgeschlossen haben.

Öffnen Sie die Dateiconfig/app.phpmit Ihrem bevorzugten Editor:

sudo nano config/app.php

Am Anfang der Datei befindet sich eine Zeile für den'debug'-Modus. Wenn Sie die Datei öffnen, wird der Modus'debug' auftrue gesetzt. Ändern Sie dies wie folgt infalse:

config/app.php

...
'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
...

Sobald Sie den Debug-Modus deaktiviert haben, wird auf der Startseite untersrc/Templates/Pages/home.ctp ein Fehler angezeigt.

The debug mode error

[.note] #Note: Wenn Sie die Standardroute nicht geändert oder den Inhalt vonhome.ctp ersetzt haben, wird auf der Startseite Ihrer App jetzt ein Fehler angezeigt. Dies liegt daran, dass die Standardhomepage während der Entwicklung als Status-Dashboard dient, jedoch nicht mit deaktiviertem Debug-Modus funktioniert.
#

Sie haben den Debug-Modus deaktiviert. Alle ab sofort auftretenden Fehler und Ausnahmen sowie deren Stack-Traces werden dem Endbenutzer nicht mehr angezeigt, wodurch die Sicherheit Ihrer Anwendung erhöht wird.

Nach dem Deaktivieren des Debug-Modus wird inhome.ctpein Fehler angezeigt. Wenn Sie diesen Schritt nur für die Zwecke dieses Lernprogramms ausgeführt haben, können Sie Ihre Homepage jetzt auf die Artikellisten-Oberfläche umleiten, während der Debug-Modus deaktiviert bleibt. Sie erreichen dies, indem Sie den Inhalt vonhome.ctp bearbeiten.

Öffnen Siehome.ctp zum Bearbeiten:

sudo nano src/Template/Pages/home.ctp

Ersetzen Sie den Inhalt durch Folgendes:

src/Template/Pages/home.ctp

Dieser HTML-Code leitet zumArticles-Controller weiter. Wenn die automatische Umleitung fehlschlägt, können die Benutzer einem Link folgen.

In diesem Schritt haben Sie den Debug-Modus aus Sicherheitsgründen deaktiviert und den Fehler auf der Startseite behoben, indem Sie den Benutzer auf die Blogpost-Listing-Oberfläche umgeleitet haben, die der Controller vonArticlesbereitstellt.

Fazit

Sie haben jetzt erfolgreich eine CakePHP-Anwendung auf einem LAMP-Stack unter Ubuntu 18.04 eingerichtet. Mit CakePHP können Sie eine Datenbank mit beliebig vielen Tabellen erstellen und einen Live-Web-Editor für die Daten erstellen.

DasCakePHP cookbookbietet eine detaillierte Dokumentation zu allen Aspekten von CakePHP. Der nächste Schritt für Ihre Anwendung könnte das Implementieren der Benutzerauthentifizierung umfassen, sodass jeder Benutzer seine eigenen Artikel erstellen kann.