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
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
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
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
120
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
200
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1.1k
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
970
Foundation Models frameworkで画像分析
ryodeveloper
1
320
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
210
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
290
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
140
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
1.1k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
AIが無かった頃の素敵な出会いの話
codmoninc
1
340
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.5k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Code Review Best Practice
trishagee
74
20k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
The Curious Case for Waylosing
cassininazir
1
440
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
30 Presentation Tips
portentint
PRO
1
360
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
230
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