CakePHP3のお勉強:コンテンツ管理チュートリアルを一発でBake

CakePHP3のお勉強:コンテンツ管理チュートリアルを一発でBake

CakePHPの公式サイトにある以下の「コンテンツ管理チュートリアル」を「CakePHP3のお勉強:ブログチュートリアルを一発でBake」と同様に一発でBakeしてみました。

コンテンツ管理チュートリアル

CakePHP3のコンテンツ管理チュートリアルを一発でBakeする

  • rootになって「/var/www/」に移動して、「/var/www/」以下にCakePHP3アプリのプロジェクトを「cake_cms」という名前で作成しました。
    $ su -
    Password:
    # cd /var/www/
    # composer create-project --prefer-dist cakephp/app cake_cms
    
  • phpMyAdminでデータベース(cake_cms)を作成し、以下のSQL文を使用してテーブル(users,articles,tags,articles_tags)を作成しました。
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        email VARCHAR(255) NOT NULL,
        password VARCHAR(255) NOT NULL,
        created DATETIME,
        modified DATETIME
    );
    
    CREATE TABLE articles (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id INT NOT NULL,
        title VARCHAR(255) NOT NULL,
        slug VARCHAR(191) NOT NULL,
        body TEXT,
        published BOOLEAN DEFAULT FALSE,
        created DATETIME,
        modified DATETIME,
        UNIQUE KEY (slug),
        FOREIGN KEY user_key (user_id) REFERENCES users(id)
    ) CHARSET=utf8mb4;
    
    CREATE TABLE tags (
        id INT AUTO_INCREMENT PRIMARY KEY,
        title VARCHAR(191),
        created DATETIME,
        modified DATETIME,
        UNIQUE KEY (title)
    ) CHARSET=utf8mb4;
    
    CREATE TABLE articles_tags (
        article_id INT NOT NULL,
        tag_id INT NOT NULL,
        PRIMARY KEY (article_id, tag_id),
        FOREIGN KEY tag_key(tag_id) REFERENCES tags(id),
        FOREIGN KEY article_key(article_id) REFERENCES articles(id)
    );
    
    INSERT INTO users (email, password, created, modified)
    VALUES
    ('cakephp@example.com', 'secret', NOW(), NOW());
    
    INSERT INTO articles (user_id, title, slug, body, published, created, modified)
    VALUES
    (1, 'First Post', 'first-post', 'This is the first post.', 1, now(), now());
    
  • エディタ(nano)で「config/app.php」に記載のデータベース設定を変更しました。
    # cd /var/www/cake_cms/
    # nano config/app.php
    
    • 「’username’」「’password’」「’database’」を作成したデータベースの内容に変更。
      /*
      * CakePHP will use the default DB port based on the driver selected
      * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
      * the following line and set the port accordingly
      */
      //'port' => 'non_standard_port_number',
      'username' => 'my_app',
      'password' => 'secret',
      'database' => 'my_app',
      
  • 「/etc/nginx/conf.d/」以下の「default.conf」と「https.conf」にあるrootの記載を「root /var/www/cake/webroot;」から「root /var/www/cake_cms/webroot;」に変更しました。
    # cd /etc/nginx/conf.d/
    # nano default.conf (または https.conf)
    
  • Nginxを再起動してから「http://(サーバーのURL)/」にアクセスして、インストール後に表示されるCakePHP3のトップページが表示されることを確認しました。
    # systemctl restart nginx.service
    
  • 「cake_cms」のテーブル「users,articles,tags」を「bake all」しました。
    # cd /var/www/cake_cms
    # bin/cake bake all users
    # bin/cake bake all articles
    # bin/cake bake all tags
    
  • エディタ(nano)で、「config/routes.php」のルーティング処理の記載を修正しました。
    # nano config/routes.php
    
    • $routes->connect(…)の記述を以下に変更。
      // コメントアウト
      //$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
      $routes->connect('/', ['controller' => 'Users', 'action' => 'index']);
      
  • Nginxを再起動しました。
    # systemctl restart nginx.service
    
  • 「http://(サーバーのURL)/」にアクセスして、下記のような「CMSのUsersページ」が表示されることを確認しました。
  • 「New Article」から新しい投稿が出来ること、「View」で投稿が表示できること、「Edit」で投稿が編集できること、「Delete」で投稿が削除できることなど、データベース処理の基本動作に問題ないことが確認出来ました。