CakePHP 5 – Instalacja

# cd /var/www/project

# composer create-project --prefer-dist cakephp/app:~5.3 .

# composer require "cakephp/authentication:^4.0"
# composer require friendsofcake/cakepdf

# bin/cake plugin load CakePdf
# composer require friendsofcake/cakephp-csvview

# bin/cake plugin load CsvView

Baza danych –  config/app_local.php

AppController.php – dodać wpisy dla zainstalowanych pakietów

use CakePdf\View\PdfView;
use Cake\View\JsonView;

class AppController extends Controller


{
  public function viewClasses(): array 
  { 
    return [JsonView::class, PdfView::class]; 
  }
...

Assety

# mkdir webroot/css/vendor
# mkdir webroot/css/vendor/fonts 
# mkdir webroot/js/vendor 

# npm install bootstrap@5 jquery @fortawesome/fontawesome-free bootstrap-icons # npm init

Skrypty kopiujące

# nano package.json
"scripts": {
    "copy-assets": "npm run copy-bootstrap && npm run copy-jquery && npm run copy-fa && npm run copy-bi",
    "copy-bootstrap": "cp node_modules/bootstrap/dist/css/bootstrap.min.css webroot/css/vendor/ && cp node_modules/bootstrap/dist/js/bootstrap.bundle.min.js webroot/js/vendor/",
    "copy-jquery": "cp node_modules/jquery/dist/jquery.min.js webroot/js/vendor/",
    "copy-fa": "cp -r node_modules/@fortawesome/fontawesome-free/css/* webroot/css/vendor/ && cp -r node_modules/@fortawesome/fontawesome-free/webfonts webroot/",
    "copy-bi": "cp node_modules/bootstrap-icons/font/bootstrap-icons.min.css webroot/css/vendor/ && cp node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff* webroot/css/vendor/fonts/"
},
# npm run copy-assets

layout/default.php

<!DOCTYPE html>
<html>
<head>
    <?= $this->Html->charset() ?>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>
        <?= $cakeDescription ?>:
        <?= $this->fetch('title') ?>
    </title>
    <?= $this->Html->meta('icon') ?>

    <!-- FontAwesome -->
    <link href="/css/vendor/all.min.css" rel="stylesheet">

    <!-- Bootstrap CSS -->
    <link href="/css/vendor/bootstrap.min.css" rel="stylesheet">

    <!-- Bootstrap Icons -->
    <?= $this->Html->css('vendor/bootstrap-icons.min.css') ?>

    <?= $this->fetch('meta') ?>
    <?= $this->fetch('css') ?>
</head>

<body>
    <main class="my-3">
        <?= $this->Flash->render() ?>
        <?= $this->fetch('content') ?>
    </main>

    <footer></footer>

    <script src="/js/vendor/jquery.min.js"></script>
    <script src="/js/vendor/bootstrap.bundle.min.js"></script>
    <?= $this->fetch('script') ?>
</body>
</html>