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
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
Workers Cache を知る
syumai
0
330
残高管理から台帳サービスへの進化
artoy
0
140
contenteditable と日本語入力に向き合う
colorful12
0
110
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
Jetpack Compose Mechanisms
skydoves
2
350
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
130
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
310
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
120
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
120
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
Designing for Timeless Needs
cassininazir
1
520
The Language of Interfaces
destraynor
162
27k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Balancing Empowerment & Direction
lara
6
1.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Making the Leap to Tech Lead
cromwellryan
135
10k
Claude Code のすすめ
schroneko
67
230k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
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