Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cakefest 2024 Workshop 1
Search
Jorge M. González Martín
July 23, 2024
0
65
Cakefest 2024 Workshop 1
Jorge M. González Martín
July 23, 2024
Tweet
Share
More Decks by Jorge M. González Martín
See All by Jorge M. González Martín
CakeFest 2023 Workshop 1
steinkel
0
29
CakeFest 2022 Workshop 1
steinkel
0
310
Cakefest 2021 Workshop 1
steinkel
0
390
Cakefest 2020 Workshop 1 and 4
steinkel
1
600
CakePHP Online Meetup 2
steinkel
0
110
Cakefest 2019 Basic Workshop
steinkel
0
800
Featured
See All Featured
Building an army of robots
kneath
302
43k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Docker and Python
trallard
40
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Git: the NoSQL Database
bkeepers
PRO
427
64k
KATA
mclloyd
29
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Writing Fast Ruby
sferik
627
61k
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