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
290
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
140
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
250
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
61
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
FreeBSDでZabbixを動かす
kenkino
0
360
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
120
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
320
Webの地図
yosuke_furukawa
PRO
6
5.1k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
Workers Cache を知る
syumai
0
330
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
JRuby: Past, Present, and Future
headius
0
220
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.1k
Domain-Driven Transformation
hschwentner
2
2.3k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
610
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Making Projects Easy
brettharned
120
6.8k
How to train your dragon (web standard)
notwaldorf
96
6.8k
Embracing the Ebb and Flow
colly
88
5.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
WENDY [Excerpt]
tessaabrams
14
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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