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
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
190
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
120
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.2k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
1
200
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
430
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
110
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
220
ChromeでローカルLLM
ryu1013
0
160
Seven New Principles of Software Engineering
yegor256
0
330
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
190
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.7k
気持ちぃ〜角丸 Squircle
ryu1013
0
340
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The Language of Interfaces
destraynor
162
27k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Amusing Abliteration
ianozsvald
1
360
Done Done
chrislema
187
17k
Automating Front-end Workflow
addyosmani
1370
210k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
380
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
How STYLIGHT went responsive
nonsquared
100
6.3k
First, design no harm
axbom
PRO
2
1.4k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Code Review Best Practice
trishagee
74
20k
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