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コードリーディング #5
Search
amidaike
March 16, 2016
Programming
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC-CUBE3コードリーディング #5
amidaike
March 16, 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デザイナー向け勉強会 #1
amidaike
0
310
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
240
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.9k
EC-CUBE3コードリーディング #3
amidaike
1
980
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
340
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
15
11k
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
310
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
160
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
190
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.8k
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
110
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.4k
Designing for humans not robots
tammielis
254
26k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Why Our Code Smells
bkeepers
PRO
340
58k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
310
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
980
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
Transcript
EC-CUBE3ίʔυϦʔσΟϯά #5 EC-CUBEؔϢʔβάϧʔϓ 2016-03-16
࣍ 1. FormTypeΛͬͨDBొ 2. EC-CUBE3ίʔυϦʔσΟϯά ཧը໘ͷडཧ 3. EC-CUBE3Λͬͨ։ൃࢦ 4. ࣭ٙԠ
1.FormTypeΛͬͨDBొ
FormTypeΛͬͨDBొ • ࠓ·Ͱͷ։ൃऀ͚ษڧձͰFormTypeͱDoctrineͷ આ໌ΛݸผͰߦ͍·ͨ͠ɻ࣮ࡍʹController͔Β FormTypeͱDoctrineΛͬͯDBొ͢Δ·ͰΛઆ໌ ͠·͢ɻ
FormTypeΛͬͨDBొ • ContorllerɺFormTypeɺTwigΛ࡞͠·͢ɻ ECCUBEROOT/src/Eccube/Form/Type/StudyType.php ECCUBEROOT/src/Eccube/Controller/ StudyController.php ECCUBEROOT/app/template/default/study.twig • EccubeServiceProvider.phpɺ FrontControllerProvider.phpϑΝΠϧʹ৽ن࡞ͨ͠
ControllerͱFormTypeΛఆٛ͠·͢ɻ
FormTypeΛͬͨDBొ • StudyType.phpͷ༰ <?php namespace Eccube\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints as Assert; class StudyType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('customer_agreement', 'textarea', array( 'required' => true, 'label' => 'ձһن', 'constraints' => array( new Assert\NotBlank()), )); } /** * {@inheritdoc} */ public function getName() { return 'study'; } }
FormTypeΛͬͨDBొ • StudyController.phpͷ༰ <?php namespace Eccube\Controller; use Eccube\Application; use Eccube\Controller\AbstractController;
use Eccube\Entity\Help; use Symfony\Component\HttpFoundation\Request; class StudyController extends AbstractController { public function index(Application $app, Request $request) { $Help = $app['eccube.repository.help']->find(2); if (!$Help) { $Help = new Help(); } $builder = $app['form.factory']->createBuilder('study', $Help); $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $Help = $form->getData(); $app['orm.em']->persist($Help); $app['orm.em']->flush(); return $app->redirect($app->url('study')); } return $app->render('study.twig', array( 'form' => $form->createView(), )); } }
FormTypeΛͬͨDBొ • study.twigͷ༰ {% extends 'default_frame.twig' %} {% block main
%} <div class="row"> <div class="col-md-6 col-md-offset-3"> <form action="{{ url('study') }}" method="post"> {{ form_widget(form._token) }} {{ form_row(form.customer_agreement) }} <p> <button type="submit" class="btn btn-primary btn- block">ొ</button> </p> </form> </div> </div> {% endblock %}
FormTypeΛͬͨDBొ • FrontControllerProviderʹՃ • EccubeServiceProviderʹՃ $c->match('/study', '\Eccube\Controller \StudyController::index')->bind('study'); return $c;
$types[] = new \Eccube\Form\Type\StudyType(); return $types;
2.EC-CUBE3ίʔυϦʔσΟϯά
EC-CUBE3ίʔυϦʔσΟϯά • AdminσΟϨΫτϦԼʹཧը໘༻ίϯτϩʔ ϥʔ͕ଘࡏ σΟϨΫτϦ໊ ػೳ໊ AdminController ϩάΠϯը໘ɺཧը໘τοϓ Content ίϯςϯπཧ༻
Customer ձһཧ༻ Order डཧ༻ Product ཧ༻ Setting جຊใઃఆɺγεςϜใઃఆ༻ Store ΦʔφʔζετΞ༻
EC-CUBE3ίʔυϦʔσΟϯά • Admin\Order\OrderController.phpɺ EditController.phpͷίʔυϦʔσΟϯά
3.EC-CUBE3Λͬͨ։ൃࢦ
EC-CUBE3Λͬͨ։ൃࢦ • EC-CUBE3ΛͬͯECαΠτΛߏங͢Δࡍͷ։ൃࢦ Λ͓͠͠·͢ɻ ͨͩ͜͠ͷࢦݸਓతͳݟղʹΑΔͷͰ͋Γɺެ ࣜݟղͰ͋Γ·ͤΜɻ
EC-CUBE3Λͬͨ։ൃࢦ • EC-CUBE3ͷόʔδϣϯʹ͍ͭͯ ։ൃ࣌Ͱ࠷৽όʔδϣϯͰ͋ΔEC-CUBEΛར༻͠ɺ όʔδϣϯΞοϓ͕ߦΘΕͨΒै͢ΔΑ͏ʹ͠·͢ɻ ͨͩ͠ɺར༻͍ͨ͠ϓϥάΠϯ͕࠷৽όʔδϣϯʹରԠ ͍ͯ͠ͳ͚ΕɺόʔδϣϯΛ߹ΘͤΔ͔ϓϥάΠϯΛ վम͢ΔΑ͏ʹ͠·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • ΧελϚΠζʹ͍ͭͯ جຊϓϥάΠϯͰΧελϚΠζΛߦ͍·͕͢Ͳ͏ͯ͠ ϓϥάΠϯͰରԠ͢Δͷ͕͍͠߹ɺ ຊମଆʹର ͯ͠ΧελϚΠζΛߦ͏Α͏ʹ͠·͢ɻ ͨͩ͠ɺtwigϑΝΠϧʹؔͯ͠શͯ app/template Լʹอଘͤ͞ɺResourceԼʹ͋ΔTwigϑΝΠϧ
৮Βͳ͍Α͏ʹ͠·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • ຊମଆΧελϚΠζରͱͳΔιʔε Controller FormType Repository Twig(app/templateԼʹอଘ) EccubeExtension ControllerProvider UtilԼͷΫϥε
EC-CUBE3Λͬͨ։ൃࢦ • DBʹ͍ͭͯ ৽ͨͳ߲͕ඞཁͳ߹ɺجຊϓϥάΠϯଆͰςʔϒ ϧΛ࡞֦ͯ͠ு͠·͢ɻͨͩ͠ɺ֎෦ΩʔΛѻ͏ඞཁ ੑ͕͋Δ࣌(dtb_productʹରͯ͠֎෦ΩʔΛషͬͯ ରԠ͍ͨ࣌͠ͳͲ)ɺຊମଆͷymlʹରͯ͠मਖ਼Λߦ ͏Α͏ʹ͠·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • ը໘࡞ɺURLʹ͍ͭͯ ৽نը໘Λ࡞͢Δ߹ɺ੩తϖʔδϖʔδཧͰ ࡞͠ɺϩδοΫ͕ೖΔ߹ɺPluginͱͯ͠࡞͢ΔΑ ͏ʹ͠·͢ɻ طଘͷURLΛมߋ͍ͨ͠߹ɺFrontControllerProvider Λमਖ਼ͯ͠ରԠ͠ɺෆཁͳURLίϝϯτΞτ͞ ͤ·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • EC-CUBE3ͷόʔδϣϯΞοϓʹ͏ै ຊདྷͰ͋ΕϑΝΠϧΛ্ॻ͖͢Δ͚ͩͰόʔδϣϯΞοϓՄೳ Ͱ͕͢ɺຊମʹΧελϚΠζߦ͏ͨΊόʔδϣϯΞοϓ࣌ खಈͰରϑΝΠϧͷΈ্ॻ͖͢ΔΑ͏ʹ͠·͢ɻ όʔδϣϯΞοϓ࣌ҎԼͷGitίϚϯυΛར༻ͯࠩ͠ΛऔΓग़͠ ରԠϑΝΠϧͷΈൺֱ͠ͳ͕ΒόʔδϣϯΞοϓ࡞ۀΛߦ͍·͢ɻ
git diff --name-only 3.0.8..3.0.9 | xargs tar cvzf 3.0.9.tar.gz ͜ͷίϚϯυΛ࣮ߦ͢Δͱɺ3.0.8͔Β3.0.9มߋରͱͳͬͨϑΝΠϧͷΈऔΓ ग़͢͜ͱ͕Մೳɻ
EC-CUBE3Λͬͨ։ൃࢦ • ϑΥʔϜλΠϓʹର͢ΔΧελϚΠζ طଘͷFormTypeʹର͢ΔΧελϚΠζΠϕϯτΛͬͯߦ ͏ͷͰͳ͘ɺϓϥάΠϯଆʹFormExtensionΛ༻ҙ֦ͯ͠ு Λߦ͍·͢ɻ ֦ுαϯϓϧ) https://github.com/EC-CUBE/ec-cube/compare/ master...chihiro-adachi:sample-form
→ձ໊ࣾͷআɺ͔ͳͷఆٛมߋɺ߲ՃͷαϯϓϧͰ͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • ެ։͞Ε͍ͯΔϓϥάΠϯಋೖ࣌ͷҙ ར༻Ͱ͖ΔϓϥάΠϯ͕͋Ε׆༻͠·͕͢ɺσβΠϯ͕߹Θͳ͍ ͷଟ͍ͨΊϓϥάΠϯʹରͯ͠σβΠϯͷमਖ਼Λ͢ΔΑ͏ʹ ͠·͢ɻ·ͨɺެ։͞Ε͍ͯΔϓϥάΠϯʹରͯ͠ෆ۩߹DBఆ ٛʹޡΓ͕͋Δͷଘࡏ͠·͢ͷͰɺϓϥάΠϯΠϯετʔϧޙҎ ԼͷίϚϯυΛ࣮ߦ͠DBͱymlϑΝΠϧͱࠩҟ͕ͳ͍͔֬ೝ͠·͢ɻ
vendor/bin/doctrine orm:schema-tool:update Λ࣮ߦͯ͠migrationՄೳ͔Ͳ͏͔Λ֬ೝ͢Δɻ vendor/bin/doctrine orm:schema-tool:update --dump-sql Λ࣮ߦͯ͠sqlΛ֬ೝ
EC-CUBE3Λͬͨ։ൃࢦ • ը૾ϑΝΠϧcssϑΝΠϧʹ͍ͭͯ σβΠϯΛมߋ͢ΔͨΊʹ৽ن࡞ͨ͠cssϑΝΠϧ ը૾ϑΝΠϧ html/template/default/assets Լʹஔ͠ɺϑϩϯτଆͷdefault_frame.twigʹ৽ن ࡞ͨ͠cssϑΝΠϧΛద༻ͤ͞ΔΑ͏ʹมߋ͠·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • EC-CUBE3Πϯετʔϧ࣌ͷॳظσʔλʹ͍ͭͯ ෆཁͳॳظσʔλશͯίϝϯτΞτͯ͠ΠϯετʔϧΛͤ͞ͳ͍Α͏ ʹ͠·͢ɻ src/Eccube/Resource/doctrine/migration/Version20150613000000.php ͜ͷϑΝΠϧͰॳظσʔλΛೖ͓ͯ͠ΓෆཁͳͷίϝϯτΞτ͞ ͤ·͢ɻ ·ͨɺར༻͢Δ͜ͱ͕֬ఆ͍ͯ͠ΔϓϥάΠϯʹ͍ͭͯ৽ͨʹ migrationϑΝΠϧΛ࡞ͯ͠ॳظΠϯετʔϧ࣌ʹҰॹʹϓϥάΠϯ
ొͤ͞·͢ɻ →ޙ͔ΒϓϥάΠϯΛΠϯετʔϧͯ͠ྑ͍͕ɺΕΔՄೳੑ͋Δͨ ΊΠϯετʔϧͱಉ࣌ʹϓϥάΠϯొͤ͞Δɻ
EC-CUBE3Λͬͨ։ൃࢦ • EC-CUBE3ͷ։ൃڥ GitΛͬͨόʔδϣϯཧΛߦ͏Α͏ʹ͠·͕͢ɺ ECCUBEROOT/vendorσΟϨΫτϦΛআ͘શͯͷϑΝ ΠϧΛόʔδϣϯཧͤ͞ΔΑ͏ʹ͠·͢ɻ (ݸਓతʹGitBucketΛͬͯ։ൃΛ͍ͯ͠·͢ɻ)
EC-CUBE3Λͬͨ։ൃࢦ • ຊ൪ڥͷΠϯετʔϧɺө࡞ۀ ຊ൪ڥߏஙɺGit͔Β࠷৽ϑΝΠϧΛऔಘ͠ɺ php composer.phar install --no-dev Λ࣮ߦ͠ඞཁͳϥΠϒϥϦΛΠϯετʔϧ͔ͯ͠Β http://υϝΠϯ໊/install.php
ΛߦͬͯEC-CUBE3ΛΠϯετʔϧ͠·͢ɻ ιʔεमਖ਼͕ߦΘΕͨ߹ɺຊ൪ڥͷөGitΛͬͯөͤ͞ ΔΑ͏ʹ͠·͢ɻ ։ൃྃ → Gitpush → ຊ൪ڥ͔ΒGitͰ࠷৽ιʔεΛmerge ͱ͍͏ྲྀΕʹͳΓ·͢ɻ
EC-CUBE3Λͬͨ։ൃࢦ • ӡ༻։࢝ޙͷը໘ͷमਖ਼ը૾ϑΝΠϧͷमਖ਼ͳͲ ӡ༻͕։࢝͞ΕΕɺը໘ͷमਖ਼શͯཧը໘ͷ ʮϖʔδཧʯˠʮϖʔδฤूʯ Ͱߦ͍ɺը૾ϑΝΠϧʹ͍ͭͯFTPͰΞοϓϩʔυ Λߦ͍ߋ৽ͤ͞·͢ɻ (ݱࡏͷόʔδϣϯͰϖʔδཧͰ৽ن࡞ͨ͠ϖʔδ શͯuser_dataʹอଘ͞Εͯ͠·͏ͨΊຊମଆʹରͯ͠म ਖ਼͢Δඞཁ͕͋Γ·͢ɻ)
4.࣭ٙԠ
։ൃ࣌ͷࢀߟϖʔδ • GitHubWiki https://github.com/EC-CUBE/ec-cube/wiki • GitHubPages http://ec-cube.github.io • Qiitaͷهࣄ http://qiita.com/tags/EC-CUBE3