cakephp-3.0 Zelfstudie
Aan de slag met cakephp-3.0
Zoeken…
Opmerkingen
Deze sectie geeft een overzicht van wat cakephp-3.0 is en waarom een ontwikkelaar het misschien wil gebruiken.
Het moet ook alle grote onderwerpen binnen cakephp-3.0 vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor cakephp-3.0 nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.
Installatie Cakephp 3.X
Voorwaarden:
- PHP 5.6.0 of hoger mbstring PHP-extensie (standaard werkt in WAMP / XAMPP, zo niet, schakel het dan in)
- intl PHP-extensie (beschikbaar in WAMP / XAMPP, u moet deze inschakelen
van php.ini) - CakePHP werkt op verschillende webservers zoals nginx,
- LightHTTPD of Microsoft IIS.
Voordat u begint, moet u ervoor zorgen dat uw PHP-versie up-to-date is:
php -v
Gebruik Composer om Cakephp 3 Framework te installeren,
Composer is officieel ondersteunde methode voor installatie, dus download composer bij, Composer (Windows / Linux / Mac)
Voer dit uit om cakephp te installeren,
php composer.phar create-project --prefer-dist cakephp/app my_app_name
Zodra Composer klaar is met het downloaden van het applicatieskelet en de kern CakePHP-bibliotheek, zou een werkende CakePHP-applicatie geïnstalleerd moeten zijn via Composer. Zorg ervoor dat u de bestanden composer.json en composer.lock bewaart met de rest van uw broncode.
Of volg deze eenvoudigste manier om cakephp te installeren
Volg de onderstaande stappen,
- ga naar deze Git Repository
- Download de cakeDC / oven voor eenvoudige installatie
- Pak het zipbestand in de LOCALHOST uit
- Geef 777 toestemming voor die map
- Voer bestand oven.php uit (beschikbaar in de map)
- Een pagina wordt geopend met veel optie, kies optie volgens uw voorkeur
- Klik op de afbeelding en leun achterover. Uw project wordt binnen enkele minuten geïnstalleerd
uit te voeren:
bin/cake server
Standaard, zonder enige argumenten, zal dit uw toepassing dienen op http: // localhost: 8765 / .
vuur dit naar je browser, http://example.com/ of http: // localhost: 8765 / . Op dit punt krijgt u de standaard startpagina van CakePHP te zien, en een bericht met de status van uw huidige databaseverbinding en u bent klaar voor uw eerste toepassing.
Volg Cakephp 3.X Installatie voor meer informatie over Installatie en Setup
Project opzetten
Eerst moet u een database maken met mysql , phpMyAdmin , HeidiSQL of een ander instrument om met Database te werken en de gebruiker een nieuwe laten maken.
Na die procedure moet u toegang verlenen tot de database voor het project.
Je moet in het dossier te gaan /path/to/your/project/config/app.php , zo ziet omhoog voor Datasources default . In die array moet u localhost (op aanvraag), user , password en database .
o naar uw browser en pagina vernieuwen. DB-probleem zou verdwenen moeten zijn en het Green Tick aan de linkerkant weergeven.
Gedaan! Je eerste project is opgezet!
Bouw eerst 'Hallo wereld!' applicatie met CakePHP 3.x (Introductie. Deel 1)
CakePHP 3.x heeft de mogelijkheid om controllers , models , views en andere door het raamwerk gedefinieerde objecten te bake .
Opmerking : als je enige ervaring hebt met het
Laravelraamwerk, lijkt hetartisanonderdeel opbake.
De bake applicatie bevindt zich in de bin map; Hier volgen enkele van de beschikbare opdrachten:
-
bin/cake bake shell %shellName%- om ShellClass te bakken -
bin/cake bake controller %controllerName%- om controllerklasse te bakken -
bin/cake bake model %modelName%- om model + entiteitsklasse te bakken -
bin/cake bake view %viewName%- om te bakken Bekijk sjabloon -
bin/cake bake all %className%- om controller, model + entiteit, weergave voor ontwikkelaar te bakken.
Opmerking : U kunt het
bake modelnietbake modelals u geen tabellen in uw database hebt
Opmerking : als u
bake allcomponentenbake all, krijgt uControllersmet vooraf gedefinieerdeCRUDacties.
Bouw eerst 'Hallo wereld!' applicatie met CakePHP 3.x (migraties van databasetabellen. Deel 2)
U kunt eenvoudig create tabellen voor uw database of drop ze als u wilt. Als u dat wilt doen, moet u leren hoe u Migrations schrijft voor de gewenste database.
Migratiebestanden moeten zich in de map config/Migrations . Bestandsnamen kunnen de volgende formaten hebben:
-
YYYYMMDDHHIISS_(Create|Alter|Delete)AdministratorsTable.php -
(1-9){1,}_(Create|Alter|Delete)AdministratorsTable.php
<?php
use Migrations\AbstractMigration;
use Cake\Log\Log;
/**
* Class AdministratorsTableMigration
*/
class AdministratorsTableMigration extends AbstractMigration
{
/**
* @var string
*/
private $_tableName;
/**
* @var string
*/
private $_tablePrefix;
public function init()
{
$this->_tableName = '"Administrators"';
$this->_tablePrefix = 'administrators';
}
public function up()
{
Log::info("Trying to create {$this->_tableName} table");
$administratorsTable = $this->table($this->_tablePrefix);
if ($administratorsTable->exists()) {
return Log::warning("Table {$this->_tableName} already exists");
}
$administratorsTable
->addPrimaryKey('id')
->addColumn('username', 'char', [
'length' => 25,
'null' => false
])
->addColumn('password', 'char', [
'length' => 255,
'null' => false
])
->addColumn('email', 'char', [
'length' => 50,
'null' => false
])
->addColumn('first_name', 'char', [
'length' => 50,
'null' => false
])
->addColumn('last_name', 'char', [
'length' => 50,
'null' => false
])
->addColumn('avatar', 'char', [
'length' => 255,
'default' => '/img/no-avatar.png'
])
->addColumn('active', 'boolean', [
'default' => 0
])
->addTimestamps()
->create();
return Log::notice("Table {$this->_tableName} has been created");
}
public function down()
{
if ($this->table($this->_tablePrefix)->exists()) {
$this->table($this->_tablePrefix)->drop();
return Log::info("Table {$this->_tableName} has been dropped");
}
return Log::warning("Table {$this->_tableName} does not exists");
}
}
Als u migratie wilt uitvoeren, moet u de volgende opdracht uitvoeren:
bin/cake migrations migrate om een tabel (-s) te maken.
Als u wilt terugdraaien:
bin/cake migrations rollback - zal de laatste bin/cake migrations rollback , waar de drop() functie bestaat
bin/cake migrations (-t|--target) all - bin/cake migrations (-t|--target) all alle migraties terug, waar de functie drop() bestaat
Bouw eerst 'Hallo wereld!' applicatie met CakePHP 3.x (Controllers, Response, View. Deel 3)
Wilt u een controller maken? Er zijn 2 manieren om het te maken:
- Handmatig (u wordt gedwongen om handmatig een Controller-bestand in
src/Controller) - Gebakken (opdracht
bin/cake bake controller %controllerName%van CLI uitvoeren)
Als u het handmatig wilt maken, gaat u naar de map src/Controller en maakt u een bestand met het volgende patroon:
([AZ]{1}[az]{1,})Controller.php
In die controller moet u namspace definiëren, die zal worden gebruikt:
<?php
namespace App\Controller;
Dan moet je het als bestandsnaam noemen, bijv. AdminiController:
use App\Controller\AppController;
class AdminController extends AppController{}
Binnen deze klasse moet u uw eerste methode maken, bijv. login :
public function login(){}
Als u in uw browser typt: http://{{project-name}}/admin/login dit een foutmelding met ontbrekende sjabloon. Hoe dit probleem op te lossen?
U moet maken onder het bestand src/Template/Admin/ login.ctp .
Opmerking : * .ctp-jokerteken - is een cakesjabloonbestand dat wordt gebruikt om gegevens door te geven / te renderen die u instelt via de controller.
Typ in dat bestand gewoon 'Hallo wereld!' waar u maar wilt, vernieuw de pagina met een sjabloonfout en u krijgt uw World , die u begroet!
Opmerking : Standaard wordt
src/Template/Layout/default.ctpals layout, als u er geen hebt gedefinieerd
CakePHP 3.4 installeren op CentOS 7 met PHP 7 en SELinux ingeschakeld
Dit heb ik gedaan om CakePHP te installeren op een nieuwe, minimale CentOS 7
- CentOS-7-x86_64-Minimal-1611.iso geïnstalleerd in VirtualBox, twee netwerkinterfaces: eerste NAT, tweede Host-Only
- set ONBOOT = ja in / etc / sysconfig / network-scripts / ifcfg-enp0s3
- reboot
- jammie update
- yum installeer net-tools (om ifconfig en netstat te krijgen)
- yum install wget
- yum installeer yum-utils
- wget -q http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- wget -q https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- rpm -Uvh remi-release-7.rpm epel-release-nieuwste-7.noarch.rpm
- yum-config-manager - remi-php71 inschakelen
- yum installeer php
- systemctl httpd inschakelen
- systemctl start httpd
- firewall-cmd --permanent --zone = public --add-service = http
- firewall-cmd --permanent --zone = public --add-service = https
- firewall-cmd - herladen
- yum installeer httpd mariadb-server mariadb php phpmyadmin
- systemctl start mariadb
- systemctl inschakelen mariadb
- systemctl herstart httpd
- yum installeer php-mbstring php-intl
- mysql_secure_installation
- curl -s https://getcomposer.org/installer | php
- cd / var / www / html /
- php componer.phar create-project --prefer-dist cakephp / app MyApp
- Chown Apache: -R MyApp /
- Maak een database:
# mysql -u root -p
Enter password:
mysql> CREATE DATABASE mydb;
mysql> GRANT ALL ON mydb.* to 'myuser'@'localhost' IDENTIFIED BY '_password_';
mysql> FLUSH PRIVILEGES;
mysql> quit
- Maak een bestand /etc/httpd/conf.d/my_app.conf met inhoud:
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName cakephp.myapp.net
DocumentRoot /var/www/html/MyApp
<Directory /var/www/html/MyApp>
Allowoverride All
</Directory>
</VirtualHost>
cd / var / www / html / secure_logging; chcon -Rv --type = httpd_user_content_rw_t tmp
raak /.autorelabel aan; reboot
Op mijn host bewerk ik / etc / hosts en voer de regel in (192.168.56.101 is het host-only-ip-adres van mijn VM)
192.168.56.101 cakephp.myapp.net
Surf naar http://cakephp.myapp.net/
ToDo: Bewerk database-verbindingsbestand.