[CakePHP] 3.xの復習

– データベースの作成から(mysql)
create database cake3
use cake3

create table posts (
id int unsigned auto_increment primary key,
title varchar(255),
body text,
created datetime default null,
modified datetime default null
);
insert into posts (title, body, created) values
(‘title 1’, ‘body 1’, now()),
(‘title 2’, ‘body 2’, now()),
(‘title 3’, ‘body 3’, now());
select * from posts;

– cakephpのインストール
composerでインストールする
$ php composer.phar create-project –prefer-dist cakephp/app:3.* myapp

### ディレクトリ構成の変更
– srcフォルダ新設
– webrootがWebブラウザからアクセスしたときに見るフォルダ

### 2系と3系の違い
1
ディレクトリ構成の変更
app, lib, plugins, vendors
bin, config, plugins, src, tests, tmp, vendor, webroot
-srcの中に、controller, model viewが入る
-webrootにpublicなファイルを配置
2
intl拡張モジュール
不要
必要
php-intlインストール
2
ビルトインサーバー
なし
bin/cake server -H 192.168.56.10 -p 8000

3
データベースの設定
app/Config/database.php
config/app.php

4
タイムゾーンの設定
app/Config/core.php
config/app.php

5
MVCファイルの作成
手動
bin/cake bake all ${app}

6
Modelファイル
app/Model/Post.php
src/Model/Table/PostsTable.php

7
Modelの書き方
class Post extends AppModel{
}
name space App\Model\Table
use Cake\ORM\Table;
class PostsTable extends Table{
}
名前空間を定義
ORM, Validation等を使用
Classの中にinitializeで初期化
8
Viewファイル
app/View/Posts/index.ctp
src/Template/Posts/index.ctp
titleなどはviewの中に記載
elementを追加できる
9
Controllerファイル
app/Controller/PostsController.php
src/Controller/PostsController.php

10
Controllerの書き方

namespace App\Controller;
class PostsController extends AppController { 
}
レコードの作成は$this->Posts->newEntity();と書く
11
Controllerでのfindの書き方
$this->Post->find(‘all’, $params);
$this->Post->find(‘all’)->order([‘title’=>’DESC’]);
繋げて条件を指定できる
12
Routing
app/Config/routes.php
config/routes.php

13
Template
app/View/Layouts/default.ctp
src/Template/Layout/default.ctp
controllerに$this->viewBuilder()->layout(‘my_layout‘);で独自テンプレートを表示できる
14
Validation
modelでarrayで定義
modelでValidationDefaultで定義

うーむ、これ3系と4系の違いもやらんといけんのか…