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
EC-CUBE3コードリーディング #3
Search
amidaike
February 17, 2016
Programming
980
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC-CUBE3コードリーディング #3
amidaike
February 17, 2016
More Decks by amidaike
See All by amidaike
EC-CUBE3勉強会新しいデザインを作成してみよう
amidaike
0
490
EC-CUBE 3.0勉強会
amidaike
1
1k
EC-CUBE3プラグイン勉強会
amidaike
0
490
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
330
EC-CUBE3コードリーディング #5
amidaike
1
1.6k
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
310
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
240
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.8k
Other Decks in Programming
See All in Programming
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
110
Jetpack Compose Mechanisms
skydoves
2
730
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
210
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.4k
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
410
JRuby: Past, Present, and Future
headius
0
230
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
360
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
330
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
First, design no harm
axbom
PRO
2
1.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
How STYLIGHT went responsive
nonsquared
100
6.3k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Building Applications with DynamoDB
mza
96
7.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
520
Transcript
EC-CUBE3ίʔυϦʔσΟϯά #3 EC-CUBEؔϢʔβάϧʔϓ 2016-02-17
ຊ EC-CUBE3.0.9 ͕ϦϦʔε ओͳಛͱͯ͠ ɾϓϥάΠϯػೳͷվળ ɾෆ۩߹ͷվम
࣍ 1. EC-CUBE3.0.9ͷόʔδϣϯΞοϓํ๏ 2. ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ 3. ςʔϒϧΛ࡞͠Α͏ 4. EC-CUBE3ίʔυϦʔσΟϯά ཧը໘ͷձһཧ
5. ࣭ٙԠ
1.EC-CUBE3.0.9ͷ όʔδϣϯΞοϓํ๏
EC-CUBE3.0.9ͷόʔδϣϯΞοϓํ๏ • ͢ͰʹEC-CUBE3.0.9Λಋೖ͍ͯ͠Δํඞཁ͋Γ·ͤΜɻ • EC-CUBE3.0.x͔Β3.0.9ͷΞοϓϩʔυҎԼͷ௨Γ (http://ec-cube.github.io/update.htmlΛࢀߟ) 1.σΟϨΫτϦΛ্ॻ͖ srcɺhtmlɺvendorσΟϨΫτϦΛ্ॻ͖ 2.ϑΝΠϧͷ্ॻ͖ app/consoleɺcli-config.phpɺcomposer.jsonɺcomposer.lockɺ
eccube_install.shɺ autload.php(3.0.8Ҏ֎͔ΒΞοϓϩʔυ͞ΕΔํͷΈ) 3.ϚΠάϨʔγϣϯͷ࣮ߦ http://υϝΠϯ/install.php/migration ʹΞΫηε͠ϚΠάϨʔγϣϯΛ࣮ߦ
2.ϑΥʔϜͱDB࿈ܞ෦Λ ࡞͠Α͏
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • ECCUBEROOT/html/index_dev.phpͷ91ߦҎ͔߱Β ҎԼͷίʔυΛهड़ • ϨεϙϯεΛͦͷ··ग़ྗ͢Δύλʔϯ • http://υϝΠϯ໊/index_dev.php/hello/aaa ͱΞΫηε $app->get('/hello/{name}',
function(\Symfony\Component\HttpFoundation \Request $request, $name) use($app) { return 'Hello ' . $app->escape($name); });
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • TwigΛͬͯग़ྗ͢Δύλʔϯ $app->get('/hello/{name}', function(\Symfony \Component\HttpFoundation\Request $request, $name) use($app) {
return $app->render('study.twig', array( 'name' => $name, )); });
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • study.twigͷ༰ {% extends 'default_frame.twig' %} {% block main
%} ͜Μʹͪ {{ name }} ͞Μ {% endblock %}
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • FormΛͬͯग़ྗ͢Δύλʔϯ $app->get('/hello/{name}', function(\Symfony\Component \HttpFoundation\Request $request, $name) use($app) {
$builder = $app['form.factory']- >createBuilder('entry'); $form = $builder->getForm(); return $app->render('study.twig', array( 'name' => $name, 'form' => $form->createView(), )); });
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • study.twigͷ༰ {% extends 'default_frame.twig' %} {% block main
%} ͜Μʹͪ {{ name }} ͞Μ {{ form_row(form) }} {% endblock %}
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • ϑΥʔϜΛ༻͢Δ߹ɺFormTypeͱݺΕΔFormΛఆٛ ͢ΔΫϥεΛ࡞͠ɺControlleͰͦͷFormΛ͏ࣄΛએݴ ͠ɺͦͷFormTypeΛtwigͷมͱͯ͠͠·͢ɻ $builder = $app['form.type']->createBuilder('ϑΥʔϜ໊'); $form =
$builder->getForm(); 'form' => $form->createView(); ←twigʹ͢Ωʔ໊ • 'form'ͱΩʔ໊Λ͚ͭΔͱtwigଆͰform͕͑ΔΑ͏ʹͳΓ· ͢ɻ
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • DB͔ΒΛऔಘ͠ը໘Λग़ྗ͢Δύλʔϯ $app->get('/hello/{name}', function(\Symfony\Component \HttpFoundation\Request $request, $name) use($app) {
$Product = $app['eccube.repository.product']- >find(1); return $app->render('study.twig', array( 'name' => $name, 'Product' => $Product, )); });
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • study.twigͷ༰ {% extends 'default_frame.twig' %} {% block main
%} ͜Μʹͪ {{ name }} ͞Μ <br> ໊ {{ Product.name }} Ͱ͢ɻ {% endblock %}
ϑΥʔϜͱDB࿈ܞ෦Λ࡞͠Α͏ • DBΛ༻͢Δ߹ɺRepositoryͱݺΕΔΫϥε͔ΒDoctrine ͕༻ҙ͍ͯ͠ΔϝιουΛͬͯݕࡧΛߦ͍·͢ɻͦͷݕࡧ݁ ՌେମEntityΦϒδΣΫτͱͯ͠औಘͰ͖ΔͨΊɺͦͷΦϒ δΣΫτΛTwigͷมͱͯ͠͠ɺtwigଆͰEntityΦϒδΣΫ τͰએݴ͞Ε͍ͯΔgetterϝιουΛͬͯΛදࣔ͠·͢ɻ {{ Product.name }}
TwigͰΞϩʔԋࢉࢠ(=>)ΛΘͣʮ.ʯΛ͍·͢ɻ·ͨɺ getName()Ͱͳ͘লུͯ͠هड़ՄೳͰ͢ɻ
3.ςʔϒϧΛ࡞͠Α͏
ςʔϒϧΛ࡞͠Α͏ • ຊମʹରͯ͠ςʔϒϧΛ࡞͢Δ͜ͱ͋Γ·ͤΜ͕ɺ ࠓޙͷͨΊʹςʔϒϧͷ࡞ํ๏Λઆ໌͓͖ͯ͠·͢ɻ • ςʔϒϧΛ࡞͢ΔͨΊʹඞཁͳϑΝΠϧɺ dcm.ymlϑΝΠϧ (ςʔϒϧఆٛͨ͠ymlϑΝΠϧ) EntityΫϥε (ςʔϒϧΛදͨ͠phpΫϥε)
RepositoryΫϥε (ςʔϒϧʹΞΫηε͢ΔΫϥε) ͕࠷ݶඞཁͱͳΓ·͢ɻ
ςʔϒϧΛ࡞͠Α͏ • ECCUBEROOT/src/Eccube/Resource/doctrine Լʹ Eccube.Entity.Study.dcm.yml ϑΝΠϧΛ࡞͠·͢ɻ • dcm.ymlϑΝΠϧΛ࡞ޙɺEntityΫϥεΛdoctrineί ϚϯυΛͬͯ࡞͠·͢ɻ(શͯ1ߦͰهड़) vendor/bin/doctrine
orm:generate:entities --extend="Eccube \\Entity\\AbstractEntity" src
ςʔϒϧΛ࡞͠Α͏ • Eccube.Entity.Study.dcm.ymlͷ༰ Eccube\Entity\Study: type: entity table: dtb_study repositoryClass: Eccube\Repository\StudyRepository
id: id: type: integer nullable: false id: true column: study_id generator: strategy: AUTO options: unsigned: true fields: name: type: string length: 100 url: type: string nullable: true length: 200 create_date: type: datetime nullable: false update_date: type: datetime nullable: false lifecycleCallbacks: { }
ςʔϒϧΛ࡞͠Α͏ • EntityΫϥεΛ࡞ޙɺ࣮ࡍʹMySQLPostgresʹରͯ͠ςʔϒϧ Λ࡞͠·͢ɻ࡞ํ๏2௨Γ͋ΓɺmigrationͱݺΕΔ ΈΛ͏͔ɺdoctirneίϚϯυΛͬͯςʔϒϧΛ࡞͢Δ͔ͷ2 ௨Γ͋Γ·͢ɻࠓճ͕࣌ؒͳ͍ͨΊdoctrineίϚϯυΛ͏ํ๏ Λઆ໌͠·͢ɻ
ɾDBͷϚΠάϨʔγϣϯํ๏ vendor/bin/doctrine orm:schema-tool:update Λ࣮ߦͯ͠migrationՄೳ͔Ͳ͏͔Λ֬ೝ͢Δɻ vendor/bin/doctrine orm:schema-tool:update --dump-sql Λ࣮ߦͯ͠sqlΛ֬ೝ vendor/bin/doctrine orm:schema-tool:update --force Λ࣮ߦͯ͠DBϚΠάϨʔγϣϯ
ςʔϒϧΛ࡞͠Α͏ • આ໌ͨ͠खॱʹैͬͯςʔϒϧΛ࡞͢Δ͜ͱ͕ՄೳͰ͢ɻ • ϓϥάΠϯ༻ͷςʔϒϧΛ࡞͢Δ߹ɺdcm.ymlϑΝΠϧ Λ࡞͢Δํ๏·Ͱಉ͡Ͱ͕͢ɺdoctrineίϚϯυΛͬ ͯ࡞͢ΔͷͰͳ͘ɺϓϥάΠϯ͕༻ҙ͍ͯ͠Δ migrationΛݺͼग़͢ϝιουΛͬͯ࡞͠·͢ɻ migrationΛݺͼग़͞ΕΔmigrationϑΝΠϧ (VersionYYYYMMDDHHMMSS.php)ͱݺΕΔΫϥεΛ࡞
͠ςʔϒϧΛ࡞͠·͢ɻ
4.EC-CUBE3ίʔυϦʔσΟϯά
EC-CUBE3ίʔυϦʔσΟϯά σΟϨΫτϦ໊ ػೳ໊ ControllerԼ ڞ௨ίϯτϩʔϥʔΫϥεɺϑϩϯτը໘ Admin ཧը໘༻ Block ϒϩοΫදࣔ༻(ॲཧ͋Γ) Install
Πϯετʔϧ༻ Mypage ϚΠϖʔδ༻
EC-CUBE3ίʔυϦʔσΟϯά • AdminσΟϨΫτϦԼʹཧը໘༻ίϯτϩʔ ϥʔ͕ଘࡏ σΟϨΫτϦ໊ ػೳ໊ AdminController ϩάΠϯը໘ɺཧը໘τοϓ Content ίϯςϯπཧ༻
Customer ձһཧ༻ Order डཧ༻ Product ཧ༻ Setting جຊใઃఆɺγεςϜใઃఆ༻ Store ΦʔφʔζετΞ༻
EC-CUBE3ίʔυϦʔσΟϯά • Admin\CustomerController.phpɺ Admin\CustomerEditController.phpͷίʔυϦʔσΟ ϯά
5.࣭ٙԠ
։ൃ࣌ͷࢀߟϖʔδ • EC-CUBE3Λ৮Δํʹରͯ͠ͷαΠτͷ͝հͰ͢ɻ • EC-CUBE3ͱSymfony2ͱSilexʹ͍ͭͯ·ͱΊΒΕ͍ͯΔهࣄͰ͢ɻ http://codechord.com/2015/12/howtolearn-eccube3-symfony-silex/ • EC-CUBE3ͷTipsूͳͲ·ͱΊΒΕ͍ͯΔαΠτͰ͢ɻ http://amidaike.hatenablog.com •
σβΠϯΛमਖ਼͢ΔࡍͷࢀߟʹͳΔαΠτͰ͢ɻ http://naoichigo.blog.so-net.ne.jp/archive/c2305860844-1
։ൃ࣌ͷࢀߟϖʔδ • GitHubWiki https://github.com/EC-CUBE/ec-cube/wiki • GitHubPages http://ec-cube.github.io • Qiitaͷهࣄ http://qiita.com/tags/EC-CUBE3