# 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>