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コードリーディング #5
Search
amidaike
March 16, 2016
Programming
1.5k
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
480
EC-CUBE 3.0勉強会
amidaike
1
980
EC-CUBE3プラグイン勉強会
amidaike
0
480
EC-CUBE3デザイナー向け勉強会 #4
amidaike
0
320
EC-CUBE3デザイナー向け勉強会 #1
amidaike
0
300
EC-CUBE3デザイナー向け勉強会 #3
amidaike
1
230
EC-CUBE3コードリーディング #4
amidaike
0
1.3k
EC-CUBE3デザイナー向け勉強会 #2
amidaike
1
2.8k
EC-CUBE3コードリーディング #3
amidaike
1
970
Other Decks in Programming
See All in Programming
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.7k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
360
OSもどきOS
arkw
0
460
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
240
A2UI という光を覗いてみる
satohjohn
1
110
Swiftのレキシカルスコープ管理
kntkymt
0
210
New "Type" system on PicoRuby
pocke
1
530
Modding RubyKaigi for Myself
yui_knk
0
900
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
230
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
500
Featured
See All Featured
Design in an AI World
tapps
1
230
Designing for Timeless Needs
cassininazir
1
250
Building AI with AI
inesmontani
PRO
1
1.1k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Un-Boring Meetings
codingconduct
0
310
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
WENDY [Excerpt]
tessaabrams
11
38k
Six Lessons from altMBA
skipperchong
29
4.3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
380
Marketing to machines
jonoalderson
1
5.4k
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