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.6k
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 Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
430
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
510
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
160
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
690
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.4k
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.7k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
510
Flow は今どうなっているか
mizdra
PRO
0
530
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
290
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
430
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Making the Leap to Tech Lead
cromwellryan
135
10k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The SEO identity crisis: Don't let AI make you average
varn
0
530
Navigating Team Friction
lara
192
16k
4 Signs Your Business is Dying
shpigford
187
23k
Being A Developer After 40
akosma
91
590k
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