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
Drupal モジュール開発入門講座 第2回 シンプルなカスタムモジュールを作ってみよう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
アクイアジャパン Acquia Japan
August 25, 2022
Programming
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Drupal モジュール開発入門講座 第2回 シンプルなカスタムモジュールを作ってみよう
https://www.acquia.com/jp/events/webinars/drupal-module-development-vol2
アクイアジャパン Acquia Japan
August 25, 2022
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
Auth0 by OktaとDrupalで実践!認証付きアプリケーションの新しいアプローチ
acquiajp
0
230
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
270
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
130
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
230
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
56
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
100
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
410
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
140
Other Decks in Programming
See All in Programming
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.3k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
170
Flow は今どうなっているか
mizdra
PRO
0
210
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
170
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
180
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
550
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
160
Building a Meta Ray-Ban display app
akkeylab
0
130
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
プロポーザルを書いてもらう
pvcresin
0
490
5分で問診!Composer セキュリティ健康診断
codmoninc
0
970
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
sira's awesome portfolio website redesign presentation
elsirapls
0
320
Automating Front-end Workflow
addyosmani
1369
210k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Transcript
Drupal Ϟδϡʔϧ ։ൃೖߨ࠲ ୈ2ճ γϯϓϧͳΧελϜ ϞδϡʔϧΛ࡞ͬͯΈΑ͏
Drupal Ϟδϡʔϧ։ൃೖߨ࠲γϦʔζ – DrupalͰʮϞδϡʔϧʯͱݺΕΔɺখ͞ͳιϑτΣΞΛ࣮͢Δ͜ͱͰػೳ֦ுΛ ߦ͍·͢ɻຊΣϏφʔγϦʔζͰɺDrupalͷϞδϡʔϧ։ൃʹؔ͢ΔجૅࣝΛղઆ͠ ·͢ɻ – DrupalͷόοΫΤϯυपΓʹ͍ͭͯମܥతʹֶͼ͍ͨํɺࣗͰΧελϜϞδϡʔϧΛ࡞ ΕΔΑ͏ʹͳΓ͍ͨํɺΞΫΠΞೝఆσϕϩούʔࢼݧΛࢦ͢ํʹ͓͢͢ΊͰ͢ɻ –
DrupalΛҰ௨Γૢ࡞ͨ͜͠ͱ͕͋ΔํΛରͱ͍ͯ͠·͢ɻ·ͩDrupalΛ৮ͬͨ͜ͱ͕ແ ͍ํɺॳ৺ऀ͚DrupalνϡʔτϦΞϧಈըʢຊޠʣΛઌʹݟ͓ͯ͘ͱΑΓཧղ͕ਂ ·Γ·͢ɻ
ΞδΣϯμ 1. ΧελϜϞδϡʔϧΛ࡞Ζ͏ 2. *.info.ymlϑΝΠϧͷ࡞ 3. ϑοΫΛ࣮ 4. ϧʔςΟϯάͱίϯτϩʔϥʔΛՃ 5.
ϑΥʔϜΛ࡞ 6. ϒϩοΫΛ࡞ 7. ࿅श
ΧελϜϞδϡʔϧΛ࡞Ζ͏
DrupalΛ֦ு͢Δํ๏ ϞδϡʔϧʹΑͬͯDrupalΛมߋɾ֦ு͢Δ͢Δํ๏༷ʑ༻ҙ͞Ε͓ͯ ΓɺΓ͍ͨ͜ͱʹΑͬͯΞϓϩʔν͕ҟͳΓ·͢ɻ – ϑοΫ – ϓϥάΠϯ – ΤϯςΟςΟ –
αʔϏε – ϧʔςΟϯά – Πϕϯτ
खॱ 1. *.info.ymlͷ࡞ 2. ϑοΫΛ࣮ 3. ϧʔςΟϯάͱίϯτϩʔϥʔΛՃ 4. ϑΥʔϜΛ࡞ 5.
ϒϩοΫΛ࡞ ΧελϜϞδϡʔϧͷ࡞εςοϓ Drupal͕ϞδϡʔϧΛͲͷΑ͏ʹѻ͏͔Λֶश͢ΔͨΊʹɺΧελϜϞδϡʔϧΛ࡞͢ΔҰͭͷྫΛ հ͠·͢ɻ υΩϡϝϯτϧʔτԼʹɺmodules/custom/marucha/ ͱ͍͏σΟϨΫτϦΛ࡞͠ɺ͜͜ͰΧελϜϞ δϡʔϧͷ࡞Λߦ͍ͬͯ͘͜ͱͱ͠·͢ɻ ιʔείʔυͪ͜Β→ https://github.com/hmaruyama/my-drupal9-module/compare/master...vol2
*.info.ymlϑΝΠϧͷ࡞
– Ϟδϡʔϧͷ໊લઆ໌ͳͲɺϞδϡʔϧʹؔ͢ΔϝλใΛهड़͢ΔͨΊͷϑΝΠϧͰ ͢ɻ – Ϟδϡʔϧ࡞ʹ͓͍ͯɺ།ҰͷඞਢϑΝΠϧͰ͢ɻ – ͜ͷϑΝΠϧ͑͋͞ΕɺDrupalΧελϜϞδϡʔϧΛదͳϞδϡʔϧͱͯ͠ೝࣝͰ ͖·͢ɻ – YMLܗࣜͷϑΝΠϧͳͷͰɺΠϯσϯτλϒͰͳ͘εϖʔε2ͭͰߦ͏ඞཁ͕͋Γ·͢ɻ
*.info.ymlϑΝΠϧͱ your Drupal project root └── web (document root) └── modules └── custom └── marucha └── marucha.info.yml
marucha.info.ymlΛ࡞͠Α͏ name: Marucha type: module description: 'This is the first
custom module.' core_version_requirement: ^8 || ^9 ඞਢ Ϟδϡʔϧͷϥϕϧ໊ ඞਢ ֦ுػೳͷछผΛࣔ͢ ҙ Ϟδϡʔϧͷઆ໌Λࣔ͢ ඞਢ ରԠ͢ΔίΞόʔδϣϯ
ࢀߟ) *.info.ymlϑΝΠϧͰఆٛՄೳͳKey-ValueϖΞ https://www.drupal.org/docs/creating- modules/let-drupal-know-about-your- module-with-an-infoyml-file
ΧελϜϞδϡʔϧΛ༗ޮԽ͢Δ – *.info.ymlϑΝΠϧΛదʹ༻ҙ͢Δ͚ͩͰɺDrupalϞδϡʔϧΛೝࣝͯ͘͠Ε·͢ɻ – Drupalཧϝχϡʔ > ػೳ֦ு ͷϞδϡʔϧҰཡͷதʹʮMarucha Moduleʯ͕දࣔ͞Ε͍ͯΔ͔֬ೝ͠ ·͢ɻ
– νΣοΫϘοΫεʹνΣοΫΛೖΕͯɺʮΠϯετʔϧʯϘλϯΛΫϦοΫ͠·͢ɻ *.info.ymlϑΝΠϧͷΈͷঢ়ଶͩ ͕ɺσΟϨΫτϦͱϑΝΠϧΛ ਖ਼͘͠ஔ͢Δ͜ͱͰϞδϡʔ ϧͱͯ͠ೝࣝ͞ΕΔʂ
ԋश *.info.ymlϑΝΠϧΛ࡞ͯ͠ɺϞδϡʔϧΛ༗ޮԽ͠Α͏ʂ 1. ΧελϜϞδϡʔϧͷσΟϨΫτϦԼʹ marucha.info.ymlϑΝΠϧΛ࡞͢Δ 2. Drupalͷཧը໘ͷ ػೳ֦ு ϖʔδʹҠಈͯ͠
ΧελϜϞδϡʔϧΛ༗ޮԽ͢Δ
ϑοΫΛ࣮
ϑοΫͰطଘͷϑΥʔϜΛॻ͖͑Α͏
ϑοΫͱʁ – ϑοΫ(Hooks)ͱɺDrupalͷಈ࡞Λมߋ͢ΔؔͰ͢ɻ – ϑοΫΛ༻͢Δ͜ͱͰɺطଘͷίʔυΛॻ͖͑Δ͜ͱͳ͘ɺDrupalίΞଞϞ δϡʔϧͷಈ࡞Λมߋɾ֦ுͰ͖·͢ɻ – ֤ϑοΫ hook_batch_alter() ͷΑ͏ʹ
hook_ Ͱ࢝·Δ໊લ͕͚ͭΒΕ͍ͯ·͢ɻ – ֤ϑοΫʹɺఆٛࡁΈͷҰ࿈ͷύϥϝʔλʔͱɺఆٛࡁΈͷΓ͕༻ҙ͞Εͯ ͍·͢ɻ – جຊతʹɺΧελϜϞδϡʔϧͷ *.moduleϑΝΠϧͰϑοΫΛ࣮͠·͢ɻ – ΧελϜϞδϡʔϧͰΦϦδφϧͷϑοΫΛఏڙ͢Δ͜ͱՄೳͰ͢ɻ https://www.drupal.org/docs/creating-custom- modules/understanding-hooks
DrupalίΞͰ༻ҙ͞Ε͍ͯΔϑοΫؔҰཡ ૯ɿ286ݸ ʢDrupal 9.4.x࣌ʣ https://api.drupal.org/api/ drupal/core%21core.api.php/ group/hooks/9.4.x
ԋश ϑοΫΛ࣮ͯ͠ɺطଘͷϑΥʔϜΛॻ͖͑Α͏ʂ 1. ΧελϜϞδϡʔϧͷσΟϨΫτϦԼʹ marucha.moduleϑΝΠϧΛ࡞͢Δ 2. ར༻(࣮)͍ͨ͠ϑοΫΛυΩϡϝϯτ͔Β୳ͯ͠ɺϑοΫͷίʔυΛ ίϐʔͯ͠marucha.moduleϑΝΠϧʹϖʔετ͢Δ 3.
໊ؔͷ hook_ ෦Λ marucha_ (ϞδϡʔϧͷϚγϯ໊)ʹॻ͖͑Δ 4. ؔͰ࣮ߦ͢ΔॲཧΛهड़͢Δ
ϧʔςΟϯάͱίϯτϩʔϥʔΛՃ
ಠࣗͷϖʔδΛՃ͠Α͏
Drupalͷϖʔδίʔϧϓϩηε https://www.drupal.org/docs/drupal-apis/ routing-system/routing-system-overview ᶃ શͯͷϦΫΤετ index.php(ϑϩϯτί ϯτϩʔϥʔ)Λ௨Δ ᶄ index.phpͰɺSymfonyͷ HTTPKernelΛجͱͨ͠
DrupalKernel͕࣮ߦ͞ΕΔ ᶅ ϦΫΤετͷϧʔτΛಛ ఆ͠ɺίϯτϩʔϥʔΛ࣮ ߦɺςϯϓϨʔτͷϨϯμϦ ϯά͕ߦΘΕΔ ᶆ ίϯτϩʔϥʔͷॲཧ݁ ՌΛHTTPϨεϙϯεͱͯ͠ ฦ٫͢Δ
DrupalͷϧʔςΟϯάγεςϜ – ϧʔςΟϯάɺDrupal͕ड͚औͬͨϦΫΤετʹରͯ͠ɺͲͷίϯ τϩʔϥʔʗΞΫγϣϯΛ࣮ߦ͢Δ͔ΛϚοϐϯά͢ΔͷͰ͢ɻ – Ϟδϡʔϧͷ *.routing.yml ϑΝΠϧͰϧʔςΟϯάΛఆٛͰ͖·͢ɻ ͜Ε͕ϧʔςΟϯάΛఆٛ͢Δ࠷؆୯ͳํ๏Ͱ͢ɻ –
ଞʹɺPHPίʔυͰطଘϧʔτΛมߋ͢Δ͜ͱͰ͖·͢ɻ
DevelϞδϡʔϧͰɺαΠτʹొ ͞Ε͍ͯΔશͯͷϧʔτҰཡΛऔಘ Ͱ͖·͢ɻ /devel/routes DrupalαΠτͷϧʔτҰཡ
ϧʔςΟϯάͷએݴ Ϟδϡʔϧͷ *.routing.yml ϑΝΠϧͰϧʔςΟϯάΛఆٛͰ͖·͢ɻ marucha.page: path: '/marucha' defaults: _controller: '\Drupal\marucha\Controller\MaruchaController::index'
_title: 'Marucha First Page' requirements: _permission: 'access content' https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal-routes- and-controllers-example#s-routing-in-routingyml-files
ίϯτϩʔϥʔͷՃ *.routing.yml ϑΝΠϧͷ _controller Ωʔ ʹɺ࣍ͷΛࢦఆ͍ͯ͠·ͨ͠ɻ '\Drupal\marucha\Controller\MaruchaCon troller::index'
ϧʔςΟϯάͰએݴ໊ͨ͠લͱҰக͢Δ Α͏ʹɺίϯτϩʔϥʔΫϥεΛ༻ҙ͠ ͯΞΫγϣϯϝιουΛ࣮͠·͢ɻ <?php namespace Drupal\marucha\Controller; use Drupal\Core\Controller\ControllerBase; /** * Provides route responses for marucha module. */ class MaruchaController extends ControllerBase { /** * Returns a simple page. * * @return array * A simple renderable array. */ public function index() { return ['#markup' => 'Hello world!']; } } src/Controller/MaruchaController.php https://www.drupal.org/docs/drupal-apis/routing-system/introductory-drupal- routes-and-controllers-example#s-building-a-page-controller
ԋश ϧʔςΟϯάͱίϯτϩʔϥʔΛՃͯ͠ɺಠࣗͷϖʔδΛ࡞͠Α͏ʂ 1. ϞδϡʔϧͷσΟϨΫτϦԼʹ marucha.routing.yml ϑΝΠϧΛ࡞͢Δ 2. ϑΝΠϧʹϧʔςΟϯάΛઃఆ͢Δ 3.
ϞδϡʔϧσΟϨΫτϦԼʹ src/Controller/MaruchaController.php ϑΝΠϧΛ࡞͢Δ 4. ΞΫγϣϯϝιουΛ࣮͢Δ
ϑΥʔϜΛ࡞
Form APIͰϑΥʔϜΛ࡞͠Α͏
DrupalͷForm API – DrupalͷForm APIɺHTMLϑΥʔϜΛૢ࡞͢ΔͨΊͷநԽϨΠϠͰ͢ɻ – ϑΥʔϜͷఆٛɺදࣔɺݕূɺૹ৴ɺͱ͍͏ϥΠϑαΠΫϧΛ੍ޚ͠·͢ɻ – \Drupal\Core\Form\FormInterfaceΛ࣮ͯ͠ϑΥʔϜΫϥεΛ࡞͢Δ͜ͱͰɺΧελ ϜϞδϡʔϧͰϑΥʔϜΛ੍ޚͰ͖·͢ɻ
– ϑΥʔϜ͕ཁٻ͞ΕΔͱɺϑΥʔϜϨϯμϦϯάՄೳͳ$formྻͱͯ͠ఆٛ͞Ε· ͢ɻ – $formྻϨϯμϦϯάͷաఔͰHTMLʹม͞ΕɺΤϯυϢʔβʔʹදࣔ͞Ε·͢ɻ https://www.drupal.org/docs/drupal-apis/form- api/introduction-to-form-api
– Form APIɺ\Drupal\Core\Form\FormInterfaceΛ࣮ͨ͠جఈΫϥεΛ ఏڙ͍ͯ͠·͢ɻ͜ΕϑΥʔϜͷ։࢝ͱ֦ͯ͠ுͰ͖·͢ɻ – FormBaseɿ࠷ҰൠతͳϑΥʔϜ – ConfigFormBaseɿཧऀ͕ϞδϡʔϧͷઃఆΛߋ৽Ͱ͖Δઃఆ ϑΥʔϜ –
ConfirmFormBaseɿ֬ೝखॱΛఏڙ͢Δɺίϯςϯπ·ͨઃఆ Λআ͢ΔͨΊͷϑΥʔϜ ϑΥʔϜͷछྨ
ϑΥʔϜΫϥεΛ࡞͢Δ <?php namespace Drupal\marucha\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; class MaruchaForm
extends FormBase { public function getFormId() { /** ϑΥʔϜΛࣝผ͢ΔͨΊͷIDΛฦ٫͢Δ */ } public function buildForm(array $form, FormStateInterface $form_state) { /** ϑΥʔϜΛߏ͢Δ֤ཁૉΛఆٛ͢Δ$formྻΛฦ٫͢Δ */ } public function submitForm(array &$form, FormStateInterface $form_state) { /** ϑΥʔϜͷૹ৴ϑΥʔϜσʔλͷॲཧΛߦ͏ */ } } ϑΥʔϜΫϥε • getFormID() • buildForm() • submitForm() ͷ3ͭͷϝιου͕ඞཁ src/Form/MaruchaForm.php ࡞ͨ͠ϑΥʔϜ • ϧʔςΟϯάʹొͯ͠ϖʔδ ͱͯ͠දࣔͨ͠Γ • FormBuilderαʔϏεΛར༻ͯ͠ ϒϩοΫͰදࣔͨ͠Γ ͢Δ͜ͱ͕Ͱ͖Δ
ԋश Form APIΛར༻ͯ͠ಠࣗͷϑΥʔϜΛ࡞͠Α͏ʂ 1. ϞδϡʔϧͷσΟϨΫτϦԼʹ src/Form/MaruchaForm.php ϑΝΠϧΛ࡞͢Δ 2. ඞཁͳϝιουΛ࣮͢Δ
3. marucha.routing.ymlϑΝΠϧʹϧʔςΟϯάΛઃఆ͢Δ
ϒϩοΫΛ࡞
Block APIͰϒϩοΫΛ࡞͠Α͏
– Block APIɺ࣮ࡍʹ2ͭͷAPIͰߏ͞Ε͍ͯ·͢ɻ – Plugin APIɿϒϩοΫͷίϯςϯπΛϨϯμϦϯά – Entity APIɿϒϩοΫͷஔใϒϩοΫݻ༗ͷߏΛอଘ –
\Drupal\Core\Block\BlockPluginInterfaceΛ࣮͢ΔϒϩοΫΫϥεΛ࡞ͯ͠ɺϒϩοΫΛఆٛ Ͱ͖·͢ɻ – Ͱ͕͢ɺ௨ৗBlockPluginInterfaceͰͳ͘\Drupal\Core\Block\BlockBaseΫϥεΛ֦ுͯ͠Ϋ ϥεΛ࡞͠·͢ɻ – ͜ΕɺϒϩοΫߏΤϯςΟςΟͰߏΛऔಘɾઃఆ͢ΔͨΊͷڞ௨ͷߏϑΥʔϜͱ ϢʔςΟϦςΟϝιουΛఏڙ͢ΔΫϥεͰ͢ɻ Block APIͱ
ϒϩοΫΫϥεΛ࡞͢Δ <?php namespace Drupal\marucha\Plugin\Block; use Drupal\Core\Block\BlockBase; /** * Provide a
custom block. * * @Block( * id = "marucha_block", * admin_label = @Translation("Marucha Block"), * ) */ class MaruchaBlock extends BlockBase { /** * {@inheritDoc} */ public function build() { return ['#markup' => $this->t('This is a Block!'),]; } } src/Plugin/Block/MaruchaBlock.php ΞϊςʔγϣϯͰ ϒϩοΫID ཧ༻ϥϕϧΛ ఆٛ͢Δ ࡞ͨ͠ϒϩοΫ ཧը໘ͷϒϩοΫϨΠΞτ ϖʔδͰαΠτʹஔͰ͖ΔΑ ͏ʹͳΔ build() ϝιουͰ ϨϯμϦϯάྻ Λฦ٫͢Δ
ԋश Block APIΛར༻ͯ͠ಠࣗͷϒϩοΫΛ࡞͠Α͏ʂ 1. ϞδϡʔϧͷσΟϨΫτϦԼʹ src/Plugin/Block/MaruchaBlock.php ϑΝΠϧΛ࡞͢Δ 2. ΞϊςʔγϣϯͰϒϩοΫΛఆٛ͢Δ
3. ඞཁͳϝιουΛ࣮͢Δ 4. Drupalཧը໘͔Β ϒϩοΫϨΠΞτ ʹҠಈͯ͠ ҙͷϦʔδϣϯʹ࡞ͨ͠ϒϩοΫΛஔ͢Δ
࿅श
࿅श1 *.info.ymlͰඞͣࢦఆ͢Δඞཁͷ͋ΔΛ͔࣍Β2ͭબ͍ͯͩ͘͠͞ɻ 1. name 2. description 3. package 4. type
5. configure
࿅श1 *.info.ymlͰඞͣࢦఆ͢Δඞཁͷ͋ΔΛ͔࣍Β2ͭબ͍ͯͩ͘͠͞ɻ 1. name 2. description 3. package 4. type
5. configure
࿅श2 FormBaseΫϥεΛ֦ு͢ΔϑΥʔϜΫϥεʹඞཁͳϝιου࣍ͷ͏ͪͲ ΕͰ͔͢ʁ͔࣍Β3ͭબ͍ͯͩ͘͠͞ɻ 1. getFormID() 2. buildForm() 3. validateForm() 4.
saveForm() 5. submitForm()
࿅श2 FormBaseΫϥεΛ֦ு͢ΔϑΥʔϜΫϥεʹඞཁͳϝιου࣍ͷ͏ͪͲ ΕͰ͔͢ʁ͔࣍Β3ͭબ͍ͯͩ͘͠͞ɻ 1. getFormID() 2. buildForm() 3. validateForm() 4.
saveForm() 5. submitForm()
࿅श3 ϧʔςΟϯάͷఆٛͲ͜Ͱߦ͏͜ͱ͕Ͱ͖·͔͢ʁ 1. routes.xml Ͱߦ͏ɻ 2. routes.yml Ͱߦ͏ɻ 3. *.routing.yml
Ͱߦ͏ɻ 4. ίϯτϩʔϥʔΫϥεͷΞϊςʔγϣϯͰߦ͏ɻ
࿅श3 ϧʔςΟϯάͷఆٛͲ͜Ͱߦ͏͜ͱ͕Ͱ͖·͔͢ʁ 1. routes.xml Ͱߦ͏ɻ 2. routes.yml Ͱߦ͏ɻ 3. *.routing.yml
Ͱߦ͏ɻ 4. ίϯτϩʔϥʔΫϥεͷΞϊςʔγϣϯͰߦ͏ɻ
࿅श4 ϧʔςΟϯάͷઃఆʹ͓͍ͯɺඞਢͷΩʔ࣍ͷ͏ͪͲΕͰ͔͢ʁ͔࣍Β3 ͭબ͍ͯͩ͘͠͞ɻ 1. defaults 2. path 3. methods 4.
requirements 5. options
࿅श4 ϧʔςΟϯάͷઃఆʹ͓͍ͯɺඞਢͷΩʔ࣍ͷ͏ͪͲΕͰ͔͢ʁ͔࣍ Β3ͭબ͍ͯͩ͘͠͞ɻ 1. defaults 2. path 3. methods 4.
requirements 5. options
࿅श5 ΧελϜϞδϡʔϧ࡞ʹ͓͍ͯɺ࠷ݶඞཁͳϑΝΠϧͲΕͰ͢ ͔ʁ 1. *.info.yml 2. *.module 3. *.services.yml 4.
src/Controller/*.php 5. README.md
࿅श5 ΧελϜϞδϡʔϧ࡞ʹ͓͍ͯɺ࠷ݶඞཁͳϑΝΠϧͲΕͰ͢ ͔ʁ 1. *.info.yml 2. *.module 3. *.services.yml 4.
src/Controller/*.php 5. README.md
ຊͷΞδΣϯμऴྃ
ΞδΣϯμ 1. ΧελϜϞδϡʔϧΛ࡞Ζ͏ 2. *.info.ymlϑΝΠϧͷ࡞ 3. ϑοΫΛ࣮ 4. ϧʔςΟϯάͱίϯτϩʔϥʔΛՃ 5.
ϑΥʔϜΛ࡞ 6. ϒϩοΫΛ࡞ 7. ࿅श
None