Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cakefest 2024 Workshop 1
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jorge M. González Martín
July 23, 2024
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cakefest 2024 Workshop 1
Jorge M. González Martín
July 23, 2024
More Decks by Jorge M. González Martín
See All by Jorge M. González Martín
CakeFest 2025 Workshop 1
steinkel
0
54
CakeFest 2023 Workshop 1
steinkel
0
52
CakeFest 2022 Workshop 1
steinkel
0
420
Cakefest 2021 Workshop 1
steinkel
0
480
Cakefest 2020 Workshop 1 and 4
steinkel
1
680
CakePHP Online Meetup 2
steinkel
0
130
Cakefest 2019 Basic Workshop
steinkel
0
1k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Un-Boring Meetings
codingconduct
0
440
BBQ
matthewcrist
90
10k
Documentation Writing (for coders)
carmenintech
77
5.6k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Six Lessons from altMBA
skipperchong
29
4.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
My Coaching Mixtape
mlcsv
0
340
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
CakeFest 2024 Luxembourg Workshop 1
Workshop 1 • 3h session • Quick CakePHP project setup
• Building a plugin from scratch: Report builder • Code https:/ /github.com/steinkel/cakefest2024 • Database https:/ /github.com/steinkel/cakefest2024/blob/master/db.sql • Slides
About Jorge González https:/ /phpc.social/@steinkel • VP at CakeDC
[email protected]
https:/ /www.cakedc.com
CakePHP Introduction • Setting up a development environment • Example
application • Baking our application CRUD
Setup dev environment • Requirements $ sudo apt install -y
php-cli php-intl php-mbstring php-sqlite3 zip php-zip // setup composer 5
OR Use ddev • Check https:/ /ddev.readthedocs.io/en/stable/ 6
Composer • Create a CakePHP 5 project • https:/ /github.com/cakephp/app
$ composer create-project cakephp/app cakefest2024 Installing... … Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ←Y {skeleton} 7
Configure ddev $ ddev config # edit .ddev/config.yml file $
ddev get --list # install phpmyadmin 8
Configuration • Application class • CakePHP Bootstrap • config/bootstrap.php •
config/app.php • Configure default datasource via environment (done for you by ddev in .env) 9
• Database download URL: https:/ /raw.githubusercontent.com/steinkel/cakefest2024/master/db.sql • ddev import-db Database
schema 10
$ bin/cake bake all --everything --prefix Admin (you will need
to setup Admin prefix routing) Bake Shell • Build a CRUD for our tables 11
Plugins • CakePHP Plugins
• https:/ /github.com/FriendsOfCake/awesome-cakephp • Plugin setup and configuration • We'll
set up an existing plugin later today Plugin concepts 13
Report Builder • New, generic plugin • Provide simple reporting
features to existing CakePHP projects
15
16
17
18
19
20
• bin/cake bake plugin ReportBuilder • Tweak routes and initial
configuration Let's go! 21
• bin/cake bake migration initial --plugin ReportBuilder cake bake model
--table rb_reports Reports --plugin ReportBuilder cake bake controller Reports --plugin ReportBuilder cake bake template Reports --plugin ReportBuilder Start with a migration 22
• bin/cake bake migration addStartingTable --plugin ReportBuilder Add the starting
table 23
• We need to be sure the starting table exists
Add validation 24
• Build editAssociations action, add javascript to navigate associations Navigate
associations 25
• Create new table to store the associations • Use
Ajax to save associations • Do not save duplicated associations Add association (save) 26
• Add new type to store comma separated values to
store the selected columns Create new Database Type 27
• Use the associations to select the columns for the
report • Save the selected columns as comma separated Select columns 28
• Prepare initial report run with contained associations Run the
report 29
• Add the selected columns to the report run Add
selected columns 30
• Store the filters as json • Add a filter
widget for the starting table Add filter widget 31
• Create logic to parse the filters and apply them
to the query executed Apply filters to report run 32
• Create another filter for relative dates, like "this week"
Add filter for relative dates 33
• Add simple pagination to report run Add Simple Pagination
34
• Add headers to the starting table in report run
Add Headers 35
• In case we want to fetch the data using
an endpoint Add a simple API 36
Consume API for charts 37
• In case we want to fetch the data using
an endpoint Add a simple API 38
Questions ?
Thank You ありがとうございました。 Gracias
• Create a widget to provide autocomplete filter for associations
following conventions Autocomplete association 41