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
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
450
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
phperだってパンチカードでコーディングしたい
o0h
PRO
0
370
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
200
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
200
気持ちぃ〜角丸 Squircle
ryu1013
0
320
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
350
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Event is what happens
moro
2
1.2k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Building a Scalable Design System with Sketch
lauravandoore
464
34k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
New Earth Scene 8
popppiees
4
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Marketing to machines
jonoalderson
1
5.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Unsuck your backbone
ammeep
672
58k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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