1. 程式人生 > >drupal8 模塊開發 讀書筆記 1

drupal8 模塊開發 讀書筆記 1

影響 反轉 form module uil 例如 hide mac 模塊開發

這個依賴註入有個管理的東西,假設是InjectionManager
然後框架,比如說是Framework
現在Framework 想要 實例化一個controller
它就問InjectionManager要這個Controller的實例

https://segmentfault.com/a/1190000002411255
如何理解依賴註入和控制反轉

1--控制器等價於Drupal 7中hook_menu()內的頁面回調函數:page callback
命名:class moduleNameController
位置:控制器被要求放在src/Controller目錄下
其他類也許放到src下面的其他文件夾目錄下
2--一個路由是從一個URL路徑到一個控制器的映射:路由就是一個映射
3--

文件名的秘密
page_example.info.yml
page_example.routing.yml
PageExampleController.php
page_example.links.menu.yml
模塊名-功能名-格式(php|yml)
其中功能名可以細分:type+name的方式

type是需要的新屬性,可以設置為module或theme

獲得一個路徑:
$simple_url = Url::fromRoute(‘page_example_simple‘);
$simple_link = \Drupal::l(t(‘simple page‘), $simple_url);

名字空間只會影響以下代碼類型:
-- 類(包括abstracts traits 類),接口,函數和常量

use Drupal\page_example\Controller
之後你就可以使用Controller目錄下的文件了。

hook_menu() 系統被分解為
modulename.routing.yml
和modulename.links.menu.yml
等文件。

插件(plugins)也是實體(entities)
區塊很好地被封裝在一個獨立文件內
區塊內容只在一個文件內
創建src/Plugin/Block目錄

@Block(
* id = "example_empty",
* admin_label = @Translation("Example: empty block")
* )

配置表單允許你使用用戶界面設置顯示在區塊內的
Drupal 8 內每片代碼都盡可能的自包含。意味著大多數函數不再暴露在全局範圍
內而是被封裝在類裏。因此不推薦像Drupal 7 那樣直接使用l()或t()這樣的函數。

Traits 本質上就是我們Drupal 7 使用的include,它提供能夠被包含在任何類中
的額外方法。TRAITS就是一個類,一個小好似機動性比較強的類,可以無限制的被
其他類use也就是include

通過在BlockBase中包含StringTranslationTrait,我們可以使用它的任何方
法,就如同這些方法在BlockBase中一樣。$this->t()定義在StringTranslationTrait
內。BlockBase 繼承了ContextAwarePluginBase,ContextAwarePluginBase
使用了StringTranslationTrait。所以$this->t()被引入到了BlockBase
內。

如果你熟悉 drupal_get_form(),可能會想怎樣像 Drupal 7
那樣加載一個表單呢?
Drupal 8 中使用全局類,你會用到 formBuilder() 方法:
$form = \Drupal::formBuilder()->getForm(‘Drupal\demo\Form\DemoForm‘);
這個 $form 返回的是可渲染的數組。

Drupal 8 把 Drupal 7 中的配置信息和函數收集起來用一個獨立的系統管理。

Configuration Manager
Hide Allows administrators to manage configuration changes.
Machine name: config

模塊開發者可以提交
{module}/config/install目錄內的YAML
文件,定義配置設定的構成,使用版本控制軟件跨多個環境進行發布。

FormBase
ConfigFormBase
FormInterface

Drupal 8 中使用配置API 可以把例如變量或模塊提供的配置信息存儲在
YAML 文件內。當模塊被激活時,YAML 內的信息會立刻被導入數據庫,
導入的目的是為了改善性能。一旦數據庫被改變你可以很容易的導出為
YAML 文件,重新部署。

當為模塊提供配置時,可以通過一個特定的YAML 文件為配置設定默認值
YAML 文件放置在config/install目錄內).

模塊只有被安裝時才會被導入到數據庫,所以如果模塊已經被安裝了你必須卸載重新安裝。

drupal8 模塊開發 讀書筆記 1