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.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
480
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.8k
EC-CUBE3コードリーディング #3
amidaike
1
980
Other Decks in Programming
See All in Programming
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
130
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
780
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
34k
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
100
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
ALB ログから Trace を気合で繋げる技術
fohte
7
850
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
1
220
Oxlintはいいぞ(続)
yug1224
1
530
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
510
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
How to make the Groovebox
asonas
2
2.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
30 Presentation Tips
portentint
PRO
1
380
Making Projects Easy
brettharned
120
6.7k
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