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
Drupal モジュール開発入門講座 第2回 シンプルなカスタムモジュールを作ってみよう
Search
アクイアジャパン Acquia Japan
August 25, 2022
Programming
330
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
240
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
280
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
140
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
240
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
57
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
120
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
410
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
150
Other Decks in Programming
See All in Programming
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
110
Webの地図
yosuke_furukawa
PRO
6
4.1k
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
2
290
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
150
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
660
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
520
Intent as Code
shoppingjaws
6
860
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.4k
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
540
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
Featured
See All Featured
Test your architecture with Archunit
thirion
2
2.4k
Discover your Explorer Soul
emna__ayadi
2
1.3k
How to build a perfect <img>
jonoalderson
1
6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Accessibility Awareness
sabderemane
1
210
YesSQL, Process and Tooling at Scale
rocio
174
15k
Why Our Code Smells
bkeepers
PRO
340
58k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
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