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 モジュール開発入門講座 第9回 構成
Search
アクイアジャパン Acquia Japan
January 25, 2023
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Drupal モジュール開発入門講座 第9回 構成
https://www.acquia.com/jp/events/webinars/drupal-module-development-vol9
アクイアジャパン Acquia Japan
January 25, 2023
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
Auth0 by OktaとDrupalで実践!認証付きアプリケーションの新しいアプローチ
acquiajp
0
250
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
300
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
150
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
250
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
61
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
120
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
420
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
150
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
2.3k
sbt 2.0: takeoff
eed3si9n
0
170
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
150
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.3k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
280
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
150
Groovy as a human and AI friendly programming language
paulk
0
120
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
3
720
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
200
続・コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions-again
handlename
0
130
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
699
190k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
370
4 Signs Your Business is Dying
shpigford
187
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Scaling GitHub
holman
464
140k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
540
What's in a price? How to price your products and services
michaelherold
247
13k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Mobile First: as difficult as doing things right
swwweet
225
10k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Transcript
ୈ9ճ ߏ Drupal Ϟδϡʔϧ ։ൃೖߨ࠲
Drupal Ϟδϡʔϧ։ൃೖߨ࠲γϦʔζ – DrupalͰʮϞδϡʔϧʯͱݺΕΔɺখ͞ͳιϑτΣΞΛ࣮͢Δ͜ͱͰػೳ֦ுΛߦ ͍·͢ɻຊΣϏφʔγϦʔζͰɺDrupalͷϞδϡʔϧ։ൃʹؔ͢ΔجૅࣝΛղઆ͠· ͢ɻ – DrupalͷόοΫΤϯυपΓʹ͍ͭͯମܥతʹֶͼ͍ͨํɺࣗͰΧελϜϞδϡʔϧΛ࡞Ε ΔΑ͏ʹͳΓ͍ͨํɺΞΫΠΞೝఆσϕϩούʔࢼݧΛࢦ͢ํʹ͓͢͢ΊͰ͢ɻ –
DrupalΛҰ௨Γૢ࡞ͨ͜͠ͱ͕͋ΔํΛରͱ͍ͯ͠·͢ɻ·ͩDrupalΛ৮ͬͨ͜ͱ͕ແ͍ ํɺॳ৺ऀ͚DrupalνϡʔτϦΞϧಈըʢຊޠʣΛઌʹݟ͓ͯ͘ͱΑΓཧղ͕ਂ·Γ ·͢ɻ
ΞδΣϯμ 1. ߏͱ 2. Configuration APIͰ؆қߏΛૢ࡞͢Δ 3. ϑΥʔϜͰߏΛૢ࡞͢Δ 4. ߏͷ্ॻ͖
5. ࿅श
ߏͱ
Drupalͷઃఆ εςʔδϯάαΠτɺຊ ൪αΠτͳͲෳڥ༻ ҙͯ͠Δ߹ɺνʔϜͰ ։ൃΛߦ͍ͬͯΔ߹ɺ Ͳ͏ͬͯͦͷઃఆ༰ Λڞ༗͢Δʁ
Drupalͷσʔλͷछྨ DrupalαΠτͰѻΘΕΔσʔλओʹ4छྨʹྨ – ContentɿαΠτ๚ऀʹදࣔ͢Δ͜ͱΛతͱͨ͠ςΩ ετɺը૾ͳͲͷใɻ – ConfigurationɿαΠτͷಈ࡞ɺදࣔํ๏ͳͲΛఆٛ͢Δ ใɻ௨ৗখ͞ͳςΩετͰදݱ͞ΕΔɻ – Stateɿcronδϣϒ͕࠷ޙʹ࣮ߦ͞Εͨ࣌ࠁͳͲɺαΠτ
ͷݱࡏͷঢ়ଶʹؔ͢ΔҰ࣌తͳੑ࣭ͷใɻ – SessionɿϩάΠϯ͍ͯ͠Δ͔Ͳ͏͔CookieͳͲɺݸʑ ͷαΠτ๚ऀͷαΠτͱͷΓऔΓʹؔ͢Δใɻ https://api.drupal.org/api/drupal/core%21core.api.php/group/info_types/
Drupalͷσʔλͷछྨ DrupalαΠτͰѻΘΕΔσʔλओʹ4छྨʹྨ – ContentɿαΠτ๚ऀʹදࣔ͢Δ͜ͱΛతͱͨ͠ςΩ ετɺը૾ͳͲͷใɻ – ConfigurationɿαΠτͷಈ࡞ɺදࣔํ๏ͳͲΛఆٛ͢Δ ใɻ௨ৗখ͞ͳςΩετͰදݱ͞ΕΔɻ – Stateɿcronδϣϒ͕࠷ޙʹ࣮ߦ͞Εͨ࣌ࠁͳͲɺαΠτ
ͷݱࡏͷঢ়ଶʹؔ͢ΔҰ࣌తͳੑ࣭ͷใɻ – SessionɿϩάΠϯ͍ͯ͠Δ͔Ͳ͏͔CookieͳͲɺݸʑ ͷαΠτ๚ऀͷαΠτͱͷΓऔΓʹؔ͢Δใɻ https://api.drupal.org/api/drupal/core%21core.api.php/group/info_types/
ߏͱ – ߏͱɺαΠτͷಈ࡞ɺදࣔํ ๏ͳͲΛఆٛ͢ΔใΛද·͢ɻ – DrupalͰߏΛҰ؏ͨ͠ํ๏Ͱ ѻ͏͜ͱ͕Ͱ͖·͢ɻ – ίΞͷConfiguration ManagerϞ
δϡʔϧDrushίϚϯυΛ༻ ͯ͠ߏΛΠϯϙʔτɾΤΫε ϙʔτͰ͖·͢ɻ – ͜ΕʹΑΓڥؒͰߏΛಉظͰ ͖·͢ɻ _core: default_config_hash: VDJxTZtQR21qB4l langcode: en uuid: 5a62ea13-3cb0-4db7-9 name: 'λϐΦΧ٤ళ ·Δ' mail:
[email protected]
slogan: '' page: 403: '' 404: '' front: /node admin_compact_mode: false weight_select_max: 100 default_langcode: en system.site.yml
ߏཧΛ͍࢝ΊΔखॱ 1. ߏϑΝΠϧΛஔ͢ΔಉظσΟϨΫτϦͷ࡞ – ϓϩδΣΫτϧʔτԼʹ config/default σΟϨΫτϦΛ࡞͠· ͢ɻʢσΟϨΫτϦ໊ͳΜͰOKʣ 2. ಉظσΟϨΫτϦΛDrupalଆʹೝࣝͤ͞ΔઃఆΛՃ
– settings.phpʹ $settings['config_sync_directory'] = '../config/default'; ͷߦΛՃ͠·͢ɻ 3. ؔ࿈Ϟδϡʔϧͷ༗ޮԽ – ཧը໘͔ΒߏΛΠϯϙʔτɾΤΫεϙʔτ͍ͨ͠߹ ʮConfiguration ManagerʯϞδϡʔϧΛ༗ޮԽ͠·͢ɻ·ͨ DrushίϚϯυ͔Βૢ࡞Ͱ͖·͢ɻ ಉظσΟϨΫτϦͲ͜ʹஔ͢Δ͖ʁ • Σϒ͔ΒΞΫηεͰ͖ͳ͍Α͏ʹ υΩϡϝϯτϧʔτͷ֎ʹஔ͢Δ͜ ͱ͕ଟ͍ • υΩϡϝϯτϧʔτҎԼʹஔ͢Δ ߹σΟϨΫτϦ໊ʹϋογϡͳͲ Λར༻ͯ͠ਪଌ͞Εͳ͍Α͏ʹ͢Δɺ ͘͠ΞΫηεͰ͖ͳ͍Α͏ʹ apacheͳͲͰઃఆ͢Δ
ߏཧͷओͳૢ࡞ – DrupalαΠτͷߏΛYAMLϑΝΠϧͱͯ͠ΤΫεϙʔτ͢Δ $ drush config:export – YAMLϑΝΠϧ͔ΒߏΛDrupalαΠτʹΠϯϙʔτ͢Δ $ drush
config:import – YAMLϑΝΠϧͱσʔλϕʔεͷɺߏઃఆͷࠩ֬ೝ $ drush config:status – ߏઃఆΛίϚϯυϥΠϯ͔Βઃఆ͢Δ $ drush config:set system.site name 'λϐΦΧ٤ళ ·Δ' ཧը໘͘͠DrushίϚϯυͰૢ࡞͕ߦ͑·͢ɻԼهDrushίϚϯυͰͷྫͰ͢ɻ YAML ϑΝΠϧ ίʔυϕʔε σʔλ ϕʔε Πϯϙʔτ ΤΫεϙʔτ DrupalαΠτ
ߏͷछྨ – ؆қߏɿओʹਅِɺɺจࣈྻͳͲͷ͕֨ೲ͞ΕΔγϯ ϓϧͳߏͰ͢ɻͦΕΛఏڙ͢ΔϞδϡʔϧʹͷΈґଘͰ͖·͢ɻ ྫɿsystem.siteɺdblog.settings ͳͲ – ߏΤϯςΟςΟɿϢʔβʔ͕࡞ɺআͰ͖ΔใͷϦετΛ֨ ೲ͠·͢ɻߏΤϯςΟςΟಈతͳґଘؔΛ࣋ͭ͜ͱ͕Ͱ͖· ͢ɻґଘؔɺϞδϡʔϧɺςʔϚɺ·ͨΤϯςΟςΟʹ͢Δ
͜ͱ͕Ͱ͖·͢ɻ ྫɿnode.type.articleɺimage.style.wide ͳͲ ࠓओʹ؆ қߏʹ͍ͭ ͯղઆ͠· ͢ɻ
؆қߏͱߏΤϯςΟςΟͷݟ͚ํ system.site: type: config_object label: 'Site information' mapping: uuid: type:
uuid label: 'Site UUID' ...লུ... system.menu.*: type: config_entity label: 'Menu' mapping: id: type: string label: 'ID' ...লུ... – ֤ϞδϡʔϧͰఆٛ͞Ε͍ͯΔεΩʔϚϑΝ Πϧ(*.schema.yml)ͷதΛ֬ೝͯ͠ɺτο ϓΩʔͷԼͷtypeͷΛ֬ೝ͠·͢ɻ – typeͷ͕ config_objectͷ߹؆қߏɺ config_entityͷ߹ߏΤϯςΟςΟ ͱஅͰ͖·͢ɻ system.site؆ қߏͰ͋Δ system.menu.* ߏΤϯςΟ ςΟͰ͋Δ system.schema.yml
ߏͷ֨ೲʹ͍ͭͯ – DrupalʹΞΫςΟϒͳߏͱ͍͏֓೦͕͋Γ·͢ɻ͜ΕαΠτ Ͱݱࡏ༻͞Ε͍ͯΔઃఆͷ͜ͱͰ͢ɻ – ߏใσϑΥϧτͰσʔλϕʔε(configςʔϒϧ)ʹอଘ͞Ε ·͕͢ɺϩʔΧϧϑΝΠϧଞͷόοΫΤϯυʹ֨ೲ͞ΕΔ͜ͱ ͋Γ·͢ɻ – ͔͠͠ͳ͕Βɺߏ͕Ͳ͜ʹͲͷΑ͏ʹ֨ೲ͞Ε͍ͯΔ͔Λؾʹ͢
Δඞཁ͋Γ·ͤΜɻ։ൃऀৗʹConfiguration APIΛհͯ͠ΞΫ ςΟϒͳߏʹΞΫηε͢Δඞཁ͕͋Γ·͢ɻ
– ߏใͷϑΝΠϧܗࣜYAMLͰ͢ɻ – 1ͭͷYAMLϑΝΠϧ = 1ͭͷߏΦϒδΣΫτ ͱͳΓ·͢ɻ – ߏϑΝΠϧ໊΄ͱΜͲ͕
ϞδϡʔϧͷϚγϯ໊.ҙͷจࣈྻ.yml ͱͳ͍ͬͯ·͢ɻʢྫɿsystem.site.ymlʣ – ϑΝΠϧ໊ͷ ϞδϡʔϧͷϚγϯ໊.ҙͷจࣈྻ ෦͕ߏΦ ϒδΣΫτͷ໊લʹͳΓ·͢ɻ ߏϑΝΠϧͱߏΦϒδΣΫτ SystemϞδϡʔϧͷ ߏϑΝΠϧʢҰ෦ʣ ϑΝΠϧͷ1 ͭ1͕ͭߏ ΦϒδΣΫτ ͱͯ͠ѻΘΕ Δɻ
ߏεΩʔϚ system.site: type: config_object label: 'Site information' mapping: uuid: type:
uuid label: 'Site UUID' constraints: Uuid: [] NotNull: [] name: type: label ...লུ... system.maintenance: type: config_object label: 'Maintenance mode' mapping: ...লུ... system.cron: type: config_object ...লུ... system.date: type: config_object label: 'Date settings' mapping: first_day: ...লུ... – ϞδϡʔϧಠࣗͷߏσʔλΛ༻ҙ͢Δ ͜ͱ͕Ͱ͖ɺσʔλܕΛఆٛ͢ΔͨΊͷ εΩʔϚϑΝΠϧΛ༻ҙ͢Δ͜ͱ͕Ͱ͖· ͢ɻ – ϞδϡʔϧσΟϨΫτϦͷ config/schema/ *.schema.yml ͱ͍͏ϑΝΠϧΛ༻ҙ͠ ͯɺYAMLܗࣜͰϧʔϧΛهड़͠·͢ɻ – 1ͭͷϞδϡʔϧʹෳͷߏϑΝΠϧ͕ ༻ҙ͞Ε͍ͯΔ߹Ͱɺ1ͭͷεΩʔϚ ϑΝΠϧʹશͯهड़͠·͢ɻ system.schema.yml SystemϞδϡʔϧ ෳͷߏϑΝ ΠϧΛ͕࣋ͭɺε ΩʔϚใશͯ system.schema.y mlʹهड़͞ΕΔɻ
ϞδϡʔϧΠϯετʔϧ࣌ʹॳظΛηοτ͢Δ – ϞδϡʔϧઃఆʹɺॳظΛઃఆ͢ Δ͜ͱ͕ՄೳͰ͢ɻ – ϞδϡʔϧσΟϨΫτϦʹ config/ install/*.ҙͷจࣈྻ.yml ϑΝΠϧΛ࡞ ͠ɺ͜ͷதͰՃ͢ΔॳظΛΩʔ
όϦϡʔܗࣜͰηοτ͠·͢ɻ – ͜ͷॳظϞδϡʔϧͷΠϯετʔϧ ࣌ʹө͞Ε·͢ɻ langcode: en uuid: '' name: '' mail: '' slogan: '' page: 403: '' 404: '' front: /user/login admin_compact_mode: false weight_select_max: 100 default_langcode: en system/config/install/system.site.yml
ߏͱ ·ͱΊ – ߏͱɺDrupalαΠτͷઃఆใΛද͢σʔλͰ͢ɻ – YAMLϑΝΠϧͰΠϯϙʔτɾΤΫεϙʔτ͕ՄೳͰɺڥؒͰߏΛಉظͰ͖· ͢ɻ – ߏʹ؆қߏͱߏΤϯςΟςΟͷ2छྨ͕ଘࡏ͠·͢ɻ –
جຊతʹߏσʔλσʔλϕʔεʹ֨ೲ͞Ε·͕͢ɺ։ൃऀConfiguration API Λհͯ͠ΞΫςΟϒͳߏʹΞΫηεͰ͖·͢ɻ – 1ͭͷߏϑΝΠϧ͕1ͭͷߏΦϒδΣΫτͱͯ͠ѻΘΕ·͢ɻ – ߏͷεΩʔϚϑΝΠϧΛ༻ҙͨ͠ΓɺϞδϡʔϧΠϯετʔϧ࣌ͷॳظΛηο τͨ͠ΓͰ͖·͢ɻ
Configuration APIͰ ؆қߏΛૢ࡞͢Δ
– config.factoryαʔϏεΛհͯ͠ɺߏͷಡΈࠐΈɺ ࡞ɺআͳͲͷૢ࡞͕ߦ͑·͢ɻ ྫɿ\Drupal::service('config.factory' ) – ੩తϝιου2ͭ༻ҙ͞Ε͍ͯ·͢ɻ – \Drupal::confi g
– \Drupal::configFactory config.factoryαʔϏε Կ͕ҧ͏ʁͲ͏ ͍͚Δʁ
config.factoryαʔϏε ImmutableConfig ΦϒδΣΫτͷΈฦ ٫͞ΕΔɻ mutableConfigΦϒδΣΫτ ͱImmutableConfigΦϒδΣ Ϋτͷ྆ํʹରԠ͍ͯ͠Δɻ ʢɹෆɹมɹʣ ʢɹՄɹมɹʣ –
\Drupal::configɿಡΈࠐΈͷΈߦ͑Δɻ – \Drupal::configFactoryɿಡΈࠐΈˍॻ͖ࠐΈ ͕ߦ͑Δɻ
ߏͷओͳૢ࡞ ʔ ಡΈࠐΈ – 1ͭͷߏΦϒδΣΫτΛಡΈࠐΉ – ΩʔΛࢦఆͯ͠Λऔಘ͢Δ $config = \Drupal::service('config.factory')->get('system.site')
$config = \Drupal::config('system.site') $config = \Drupal::configFactory()->get('system.site') ͜ͷ3ͭͷߦ ಉ͜͡ͱΛߦͬͯ ͍·͢ʂ͍ͣΕ͔ ͷํ๏Ͱߦͬͯ͘ ͍ͩ͞ɻ $config->get('name'); ɹ// "λϐΦΧ٤ళ ·Δ" $config->get('page.front'); ɹ// "/node"
ߏͷओͳૢ࡞ ʔ ॻ͖ࠐΈ – mutableConfigΦϒδΣΫτ͕ฦ٫͞ΕΔΑ͏ʹ getEditableؔΛ༻͍ͯ1ͭͷߏΦϒδΣΫτΛಡΈࠐΉ – Ληοτͯ͠อଘ $config =
\Drupal::service('config.factory')->getEditable('system.site') $config = \Drupal::configFactory()->getEditable('system.site') ͜ͷ2ͭͷߦ ಉ͜͡ͱΛߦͬͯ ͍·͢ʂ͍ͣΕ͔ ͷํ๏Ͱߦͬͯ͘ ͍ͩ͞ɻ $config->set('name', 'όϒϧςΟʔ ·Δ'); $config->save();
ԋश Configuration APIͰߏʹΞΫηεͯ͠ΈΑ͏ʂ 1. ߏΦϒδΣΫτͷಡΈࠐΈ 2. ߏΦϒδΣΫτͷҙͷΩʔͷΛऔಘ 3. ߏͷอଘ
ϑΥʔϜͰߏΛૢ࡞͢Δ
ϑΥʔϜͷछྨ ϑΥʔϜΛ࡞͢Δʹ \Drupal\Core\Form\FormInterface Λ࣮ͨ͠ ϑΥʔϜΫϥε͕ඞཁͰ͢ɻFormInterfaceΛ࣮͢Δ͜ͱͰ͖ ·͕͢ɺForm APIͰศརͳجఈΫϥε͕3ͭ༻ҙ͞Ε͍ͯ·͢ɻ – FormBas e
– ConfigFormBas e – ConfirmFormBase ࡞͢ΔϑΥʔϜͷ༻్ʹ Ԡͯ͡ɺ͜ΕΒͷجఈΫϥ εΛ֦ுͯ͠ϑΥʔϜΫϥ εΛ࡞Ͱ͖·͢ɻ
ϑΥʔϜͷछྨ - ConfigFormBase – ConfigFormBaseΫϥεɺγεςϜ ઃఆΛߦ͏ϑΥʔϜΛ࡞͢Δࡍʹ ར༻Ͱ͖·͢ɻ – ྫɿαΠτͷجຊઃఆ –
ConfigFormBaseΫϥε FormBaseΫϥεΛ֦ு͍ͯ͠·͢ɻ
ϑΥʔϜͷछྨ ϑΥʔϜΛ࡞͢Δʹ \Drupal\Core\Form\FormInterface Λ࣮ͨ͠ ϑΥʔϜΫϥε͕ඞཁͰ͢ɻFormInterfaceΛ࣮͢Δ͜ͱͰ͖ ·͕͢ɺForm APIͰศརͳجఈΫϥε͕3ͭ༻ҙ͞Ε͍ͯ·͢ɻ – FormBas e
– ConfigFormBase – ConfirmFormBase ࠓճConfigFormBaseΛ ͬͯϑΥʔϜΛ࡞͢Δ ྫΛ͝հ͠·͢ɻ
ConfigFormBaseͰ࣮͢Δϝιου – getFormId( ) – getEditableConfigNames( ) – buildForm( )
– validateForm() ※ҙ – submitForm()
ԋश ઃఆϑΥʔϜΛ࡞ͯ͠ΈΑ͏ʂ 1. ϞδϡʔϧͷσΟϨΫτϦԼʹsrc/Form/MaruchaConfigForm.php ϑΝΠϧΛ࡞ͯ͠ɺϑΥʔϜΫϥεΛ࡞͢Δ 2. ඞཁͳϝιουΛ࣮͢Δ 3. marucha.routing.ymlϑΝΠϧʹϧʔςΟϯάΛઃఆ͢Δ ίʔυͪ͜Βˠ
https://github.com/hmaruyama/my-drupal9-module/compare/vol9
ߏͷ্ॻ͖
– ಛఆͷతͷͨΊʹɺߏΛ্ॻ͖͍ͨ͠έʔε͕ଘ ࡏ͠·͢ɻ – ϩʔΧϧڥͷΈͱ͋ΔઃఆΛมߋ͍ͨ͠ – ڥ͝ͱʹAPIΩʔΛมߋ͍ͨ͠ɺͳͲ ߏΛ্ॻ͖͢Δ
settings.phpͰߏΛ্ॻ͖͢Δ – settings.phpͰάϩʔόϧ$configมΛར༻͢Δ͜ͱͰɺߏ Λ্ॻ͖Ͱ͖·͢ɻ $config['system.site']['name'] = 'settings.phpͰ্ॻ͖ͨ͠αΠτ໊';
্ॻ͖͞ΕͨDrupalཧը໘ʹө͞Εͳ͍͜ͱʹҙ ͍ͯͩ͘͠͞ɻ ߏΛ্ॻ͖͢Δͱɾɾɾ Drupalཧը໘Ͱ ɺ্ॻ͖લͷ ͕දࣔ͞Ε͍ͯ Δʂ
– Drushͷconfig:getίϚϯυͷ߹ – ্ॻ͖ͳ͠ͷΛݟΔɿ $ drush config:get system.sit e –
্ॻ͖͞ΕͨΛݟΔɿ $ drush config:get system.site --include-overridden – PHPίʔυͷ߹ – ্ॻ͖ͳ͠ͷΛݟΔɿ – ্ॻ͖͞ΕͨΛݟΔɿ ্ॻ͖͋Γɺͳ͠ͷΛ֬ೝ͢Δํ๏ \Drupal::config('system.site')->get('name'); \Drupal::config('system.site')->getOriginal('name', FALSE); \Drupal::configFactory()->getEditable('system.site')->get('name'); MutableConfigΦ ϒδΣΫτৗʹ ্ॻ͖ͳ͠ͷ͕ ฦ٫͞ΕΔɻ
settings.phpͰߏΛ্ॻ͖ͯ͠ΈΑ͏ʂ 1. settings.phpͰ$configมΛ༻͍ͯߏΛ্ॻ͖͢Δ 2. Drupalͷཧը໘͔ΒରͷઃఆϑΥʔϜΛ͍ͯΈΑ͏ 3. DrushίϚϯυͰ্ॻ͖͞ΕͨΛ֬ೝͯ͠ΈΑ͏ ԋश
࿅श
࿅श1 Drupalͷʮߏʯʹ͍ͭͯਖ਼͍͠هड़Λબ͍ͯͩ͘͠͞ɻ 1. αΠτͷݱࡏͷঢ়ଶʹؔ͢ΔҰ࣌తͳੑ࣭ͷใΛѻ͏σʔλɻ 2. αΠτͷઃఆใΛද͢σʔλɻ 3. ݸʑͷαΠτ๚ऀͷαΠτͱͷΓऔΓʹؔ͢Δσʔλɻ 4. αΠτ๚ऀʹදࣔ͢Δ͜ͱΛతͱͨ͠ςΩετɺը૾ͳͲͷ
σʔλɻ
࿅श1 Drupalͷʮߏʯʹ͍ͭͯਖ਼͍͠هड़Λબ͍ͯͩ͘͠͞ɻ 1. αΠτͷݱࡏͷঢ়ଶʹؔ͢ΔҰ࣌తͳੑ࣭ͷใΛѻ͏σʔλɻ 2. αΠτͷઃఆใΛද͢σʔλɻ 3. ݸʑͷαΠτ๚ऀͷαΠτͱͷΓऔΓʹؔ͢Δσʔλɻ 4. αΠτ๚ऀʹදࣔ͢Δ͜ͱΛతͱͨ͠ςΩετɺը૾ͳͲͷ
σʔλɻ
࿅श2 Drupalͷʮ؆қߏʯʹ͍ͭͯਖ਼͍͠هड़Λબ͍ͯͩ͘͠͞ɻ 1. ωετͰߏσʔλΛදݱ͢Δ͜ͱ͕Մೳɻ 2. ϞδϡʔϧςʔϚɺΤϯςΟςΟʹରͯ͠ґଘؔΛ࣋ͭ͜ͱ͕Ͱ͖ Δɻ 3. ؆қߏɺ1ͭͷϞδϡʔϧʹରͯ͠1ͭͷߏϑΝΠϧʹ·ͱΊͳ͚ ΕͳΒͳ͍ɻ
࿅श2 Drupalͷʮ؆қߏʯʹ͍ͭͯਖ਼͍͠هड़Λબ͍ͯͩ͘͠͞ɻ 1. ωετͰߏσʔλΛදݱ͢Δ͜ͱ͕Մೳɻ 2. ϞδϡʔϧςʔϚɺΤϯςΟςΟʹରͯ͠ґଘؔΛ࣋ͭ͜ͱ͕Ͱ͖ Δɻ 3. ؆қߏɺ1ͭͷϞδϡʔϧʹରͯ͠1ͭͷߏϑΝΠϧʹ·ͱΊͳ͚ ΕͳΒͳ͍ɻ
࿅श3 PHPίʔυͰ͋ΔߏΦϒδΣΫτ(marucha.settings)ͷΩʔʹΛηοτ͠ ͍ͨͰ͢ɻ͜ΕΛ࣮ݱ͢ΔʹɺͲͷํ๏ͰߏΦϒδΣΫτΛಡΈࠐΉ͖ Ͱ͔͢ʁ 1. \Drupal::configFactory()->get('system.site' ) 2. \Drupal::configFactory()->getEditable('marucha.settings' )
3. \Drupal::config('marucha.settings' ) 4. \Drupal::service('config.factory')->get('marucha.settings')
࿅श3 PHPίʔυͰ͋ΔߏΦϒδΣΫτ(marucha.settings)ͷΩʔʹΛηοτ͠ ͍ͨͰ͢ɻ͜ΕΛ࣮ݱ͢ΔʹɺͲͷํ๏ͰߏΦϒδΣΫτΛಡΈࠐΉ͖ Ͱ͔͢ʁ 1. \Drupal::configFactory()->get('system.site' ) 2. \Drupal::configFactory()->getEditable('marucha.settings') 3.
\Drupal::config('marucha.settings' ) 4. \Drupal::service('config.factory')->get('marucha.settings')
࿅श4 settings.phpͰ࣍ͷߦΛՃ͠·ͨ͠ɻ $config['system.logging']['error_level'] = 'all' ; ίʔυ͔Β্ॻ͖͞Εͯͳ͍ʹΞΫηε͢ΔʹͲ͏͢Εྑ͍Ͱ͔͢ʁ2ͭબͯ͠ ͍ͩ͘͞ɻ 1. \Drupal::configFactory()->get('system.logging')->get('error_level')
; 2. \Drupal::config('system.logging')->getOriginal('error_level', FALSE) ; 3. \Drupal::config('system.logging')->get('error_level') ; 4. \Drupal::configFactory()->getEditable('system.logging')->get('error_level');
࿅श4 settings.phpͰ࣍ͷߦΛՃ͠·ͨ͠ɻ $config['system.logging']['error_level'] = 'all' ; ίʔυ͔Β্ॻ͖͞Εͯͳ͍ʹΞΫηε͢ΔʹͲ͏͢Εྑ͍Ͱ͔͢ʁ2ͭબ͠ ͍ͯͩ͘͞ɻ 1. \Drupal::configFactory()->get('system.logging')->get('error_level')
; 2. \Drupal::config('system.logging')->getOriginal('error_level', FALSE); 3. \Drupal::config('system.logging')->get('error_level') ; 4. \Drupal::configFactory()->getEditable('system.logging')->get('error_level');
ຊͷΞδΣϯμऴྃ
ΞδΣϯμ 1. ߏͱ 2. Configuration APIͰ؆қߏΛૢ࡞͢Δ 3. ϑΥʔϜͰߏΛૢ࡞͢Δ 4. ߏͷ্ॻ͖
5. ࿅श
࠷ޙʹ – Ξϯέʔτͷ͝ڠྗΑΖ͓͘͠ئ͍͠·͢ʂ ʢΣϏφʔऴྃޙʹURL͕ڞ༗͞Ε·͢ʣ – ࣍ճͷ์ૹͪ͜Β 2/8(ਫ) ࠷ऴճʂDrupalϞδϡʔϧ։ൃೖߨ࠲ ୈ10ճ ࣗಈςετ
https://www.acquia.com/jp/events/webinars/drupal-module-development-vol10
None