Windowsで始めるCakePHP4

CakePHP4のメモ

13

312 views

概要

レスポンシブデザインは、さまざまなデバイス(PC、タブレット、スマートフォン)で見やすいレイアウトを提供するための技術です。CakePHP4では、Bootstrapと連携することで簡単にレスポンシブデザインが実現できます。この記事では、CakePHP4にBootstrapを導入し、レスポンシブなレイアウトやUIコンポーネントを活用する手順を解説します。

ステップ1:Bootstrapの導入

まず、CakePHP4プロジェクトにBootstrapを導入します。Bootstrapの導入方法にはCDNとローカルファイルの2つの方法がありますが、ここでは簡単なCDNを利用した方法を紹介します。

1.1 BootstrapのCDNリンクを追加

CakePHP4のビューは通常templates/layout/default.phpで設定されます。このファイルにBootstrapのCSSとJavaScriptのCDNリンクを追加します。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <?= $this->Html->charset() ?>
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title><?= $this->fetch('title') ?></title>
  7. <?= $this->Html->meta('icon') ?>
  8. <!-- BootstrapのCSS -->
  9. <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
  10. <?= $this->fetch('meta') ?>
  11. <?= $this->fetch('css') ?>
  12. <?= $this->fetch('script') ?>
  13. </head>
  14. <body>
  15. <nav class="navbar navbar-expand-lg navbar-light bg-light">
  16. <a class="navbar-brand" href="/">MyApp</a>
  17. <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  18. <span class="navbar-toggler-icon"></span>
  19. </button>
  20. <div class="collapse navbar-collapse" id="navbarNav">
  21. <ul class="navbar-nav">
  22. <li class="nav-item"><a class="nav-link" href="/articles">Articles</a></li>
  23. <li class="nav-item"><a class="nav-link" href="/users">Users</a></li>
  24. </ul>
  25. </div>
  26. </nav>
  27. <main class="container">
  28. <?= $this->Flash->render() ?>
  29. <?= $this->fetch('content') ?>
  30. </main>
  31. <!-- BootstrapのJavaScript -->
  32. <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
  33. <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.4.0/dist/umd/popper.min.js"></script>
  34. <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
  35. </body>
  36. </html>
  • viewportメタタグにより、デバイスの幅に合わせてスケールが調整されます。
  • ナビゲーションバーは、navbarクラスを使ってレスポンシブに折りたたみメニューを提供します。

1.2 ローカルでのBootstrap導入(オプション)

ローカル環境でBootstrapを管理したい場合は、Bootstrapのファイルをダウンロードし、webroot/csswebroot/jsディレクトリに保存してリンクを指定する方法もあります。

ステップ2:レスポンシブデザインの基本

Bootstrapには、レスポンシブデザインを実現するためのグリッドシステムが用意されています。containerrowcol-クラスを使用して、ページ全体のレイアウトを簡単に調整できます。

2.1 基本的なグリッドレイアウト

例えば、2カラムレイアウトを作成する場合、以下のように記述します。

  1. <div class="container">
  2. <div class="row">
  3. <div class="col-md-8">
  4. <h1>メインコンテンツ</h1>
  5. <p>ここにメインのコンテンツが入ります。</p>
  6. </div>
  7. <div class="col-md-4">
  8. <h2>サイドバー</h2>
  9. <p>ここにサイドバーの内容が入ります。</p>
  10. </div>
  11. </div>
  12. </div>
  • .col-md-8.col-md-4を使って、画面幅がmd(768px)以上の場合は2:1の割合でカラムを分けます。
  • グリッドシステムにより、画面サイズに応じて自動的にレイアウトが変更されます。

2.2 モバイル対応のレイアウト

モバイルでは、一つのカラムとして表示されるように設定するには、次のようにレスポンシブなクラスを使います。

  1. <div class="container">
  2. <div class="row">
  3. <div class="col-12 col-md-8">
  4. <h1>メインコンテンツ</h1>
  5. </div>
  6. <div class="col-12 col-md-4">
  7. <h2>サイドバー</h2>
  8. </div>
  9. </div>
  10. </div>

ここでは、.col-12クラスを使ってモバイル画面ではフル幅で表示されるようにし、mdサイズ以上で2カラム表示に切り替わるように設定しています。

ステップ3:フォームとテーブルのスタイル適用

Bootstrapを使用することで、フォームやテーブルのスタイルを整えることができます。CakePHPのFormHelperやTableHelperとBootstrapを組み合わせ、見やすいレイアウトを実現します。

3.1 フォームのBootstrapスタイル

FormHelperにクラスを指定することで、Bootstrapのスタイルを適用したフォームが作成できます。

  1. <div class="container">
  2. <?= $this->Form->create(null, ['class' => 'form-horizontal']) ?>
  3. <div class="form-group">
  4. <?= $this->Form->control('username', ['label' => 'ユーザー名', 'class' => 'form-control']) ?>
  5. </div>
  6. <div class="form-group">
  7. <?= $this->Form->control('password', ['type' => 'password', 'label' => 'パスワード', 'class' => 'form-control']) ?>
  8. </div>
  9. <button type="submit" class="btn btn-primary">ログイン</button>
  10. <?= $this->Form->end() ?>
  11. </div>

form-controlクラスを使用することで、Bootstrapのスタイルが適用されたフォームフィールドが生成されます。ボタンにもbtn btn-primaryクラスを追加して、Bootstrapのボタンスタイルを適用しています。

3.2 テーブルのBootstrapスタイル

Bootstrapのtableクラスを使って、表形式のデータを見やすく整えます。

  1. <table class="table table-striped">
  2. <thead>
  3. <tr>
  4. <th>ID</th>
  5. <th>タイトル</th>
  6. <th>作成日</th>
  7. <th>アクション</th>
  8. </tr>
  9. </thead>
  10. <tbody>
  11. <?php foreach ($articles as $article): ?>
  12. <tr>
  13. <td><?= h($article->id) ?></td>
  14. <td><?= h($article->title) ?></td>
  15. <td><?= h($article->created->format('Y-m-d')) ?></td>
  16. <td>
  17. <?= $this->Html->link('編集', ['action' => 'edit', $article->id], ['class' => 'btn btn-secondary btn-sm']) ?>
  18. <?= $this->Form->postLink('削除', ['action' => 'delete', $article->id], ['confirm' => '削除しますか?', 'class' => 'btn btn-danger btn-sm']) ?>
  19. </td>
  20. </tr>
  21. <?php endforeach; ?>
  22. </tbody>
  23. </table>
  • table-stripedクラスにより、行ごとに交互の背景色が付くことで視認性が向上します。
  • ボタンにbtnbtn-secondaryクラスを追加することで、編集・削除ボタンの見た目も整います。

ステップ4:ナビゲーションバーの設定

ナビゲーションバーもレスポンシブ対応しておくことで、スマートフォンやタ

ブレットでの表示が見やすくなります。Bootstrapのナビバーは、折りたたみメニューを簡単に実現できるため、CakePHPのリンクと組み合わせて利用しましょう。

  1. <nav class="navbar navbar-expand-lg navbar-light bg-light">
  2. <a class="navbar-brand" href="/">MyApp</a>
  3. <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  4. <span class="navbar-toggler-icon"></span>
  5. </button>
  6. <div class="collapse navbar-collapse" id="navbarNav">
  7. <ul class="navbar-nav">
  8. <li class="nav-item">
  9. <?= $this->Html->link('ホーム', ['controller' => 'Pages', 'action' => 'display', 'home'], ['class' => 'nav-link']) ?>
  10. </li>
  11. <li class="nav-item">
  12. <?= $this->Html->link('記事', ['controller' => 'Articles', 'action' => 'index'], ['class' => 'nav-link']) ?>
  13. </li>
  14. </ul>
  15. </div>
  16. </nav>
  • navbar-expand-lgクラスを使うことで、大きな画面ではメニューが表示され、モバイルでは折りたたみメニューに切り替わります。
  • ナビゲーションの各リンクにCakePHPのHtmlHelperを使用して、動的なリンクが生成されるようにしています。

まとめ

CakePHP4とBootstrapを組み合わせることで、レスポンシブなデザインを簡単に実現でき、デバイスごとに最適なレイアウトを提供できます。Bootstrapのグリッドシステムやコンポーネントを活用し、ユーザーが見やすく、操作しやすいWebサイトを構築してみてください。

Page 32 of 34.

前のページ 次のページ



[添付ファイル]

1.php_xdebug-3.0.4-8.0-vs16-x86_64.dll  


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626