Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Drupal モジュール開発入門講座 第9回 構成
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
アクイアジャパン Acquia Japan
January 25, 2023
Programming
240
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
220
Drupal 10.3の新機能紹介ウェビナー
acquiajp
0
270
DrupalCon Portland 2024 総まとめウェビナー
acquiajp
0
120
開発者必見!Acquia Cloud IDEで最高のDrupal開発を始めよう
acquiajp
0
220
触って学ぶ!デジタルアセット管理 Acquia DAM ハンズオンウェビナー
acquiajp
0
51
DrupalCon Lille 2023 総まとめウェビナー
acquiajp
0
93
コンテンツ設計手法で変更に強いアプリケーションを実現する〜ローコードによるWebアプリのバックエンド実装 #CNDF2023
acquiajp
0
410
DrupalCon Pittsburgh 2023 総まとめウェビナー
acquiajp
0
110
Acquia製品概要&Site Studioデモのご紹介
acquiajp
0
130
Other Decks in Programming
See All in Programming
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
150
CSC307 Lecture 17
javiergs
PRO
0
320
Creating Composable Callables in Contemporary C++
rollbear
0
150
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
6.8k
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.4k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
550
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
210
Performance Engineering for Everyone
elenatanasoiu
0
180
Inside Stream API
skrb
1
740
Claspは野良GASの夢をみるか
takter00
0
200
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Agile that works and the tools we love
rasmusluckow
331
21k
Become a Pro
speakerdeck
PRO
31
6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Mobile First: as difficult as doing things right
swwweet
225
10k
ラッコキーワード サービス紹介資料
rakko
1
3.7M
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Paper Plane (Part 1)
katiecoart
PRO
0
9.1k
Statistics for Hackers
jakevdp
799
230k
Ruling the World: When Life Gets Gamed
codingconduct
0
260
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