Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Drupal モジュール開発入門講座 第9回 構成
アクイアジャパン Acquia Japan
January 25, 2023
Programming
0
15
Drupal モジュール開発入門講座 第9回 構成
https://www.acquia.com/jp/events/webinars/drupal-module-development-vol9
アクイアジャパン Acquia Japan
January 25, 2023
Tweet
Share
More Decks by アクイアジャパン Acquia Japan
See All by アクイアジャパン Acquia Japan
DrupalCamp DEN 2023 Iwakuniの魅力を一挙ご紹介! #DrupalCampDEN
acquiajp1
0
25
直近のプロダクトアップデート総まとめ
acquiajp1
0
25
リリース直前!Drupal 10に備えるためのキャッチアップウェビナー
acquiajp1
0
28
【オンラインハンズオン】Docker+LandoでCMS環境を構築してみよう #Drupal #CNDT2022
acquiajp1
0
18
Drupal モジュール開発入門講座 第8回 エンティティ
acquiajp1
0
21
Drupal モジュール開発入門講座 第7回 プラグイン
acquiajp1
0
24
Drupal モジュール開発入門講座 第6回 イベント
acquiajp1
0
32
Drupal モジュール開発入門講座 第5回 サービス
acquiajp1
0
38
Drupal モジュール開発入門講座 第4回 フォーム
acquiajp1
0
32
Other Decks in Programming
See All in Programming
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
600
2023年にクル(かもしれない)通信ミドルウェア技術(仮)
s_hosoai
0
210
子育てとEMと転職と
_atsushisakai
1
410
tidy_rpart
bk_18
0
600
Hatena Engineer Seminar #23「新卒研修で気軽に『ありがとう』を伝え合える Slack アプリを開発した話」
slashnephy
0
320
AWSにおける標的型Bot対策
hacomono
0
420
WordPress(再)入門 - 基礎知識・環境編
oleindesign
1
140
LIFFで動く割り勘アプリTATEKAをリリースしてみた話
inoue2002
0
260
Form実装基本を学び直してみた
hyugatsukui
0
240
ポケモンで学ぶiOS 16弾丸ツアー 🚅
giginet
PRO
1
610
PHP でガチの電卓を作る
memory1994
PRO
1
110
ECテックカンファレンス2023
kspace
1
350
Featured
See All Featured
Making Projects Easy
brettharned
102
4.8k
Building Flexible Design Systems
yeseniaperezcruz
314
35k
What's in a price? How to price your products and services
michaelherold
233
9.7k
Building an army of robots
kneath
301
40k
Become a Pro
speakerdeck
PRO
6
3.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
13
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
32
1.9k
Fontdeck: Realign not Redesign
paulrobertlloyd
74
4.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
500
130k
The Straight Up "How To Draw Better" Workshop
denniskardys
226
130k
The Web Native Designer (August 2011)
paulrobertlloyd
76
2.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
1.2k
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