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
EC-CUBE3コードリーディング #3
Search
amidaike
February 17, 2016
Programming
970
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
480
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
330
EC-CUBE3コードリーディング #5
amidaike
1
1.5k
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
310
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
230
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.8k
Other Decks in Programming
See All in Programming
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
640
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
5分で問診!Composer セキュリティ健康診断
codmoninc
0
270
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
140
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.5k
act1-costs.pdf
sumedhbala
0
230
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Thoughts on Productivity
jonyablonski
76
5.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
420
Skip the Path - Find Your Career Trail
mkilby
1
170
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.8k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Six Lessons from altMBA
skipperchong
29
4.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
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