42. 配置系统Configuration(四):配置schema与类型化

龶龲龯龬龫龪龧龣 schema 龎龧龣龊龉龅龄龃龁龀齽齻齷齳齯龧龣龊龉齫龅龄龃齧齣龊龉齢齞齜龊龉齚龅龄龃龧龣齖齕齓齐齌 schema 齈齇齅齁龃鼽鼼齫龁龶龧龣龊龉 Drupal\Core\Config\Config 龬鼘鼔鼐鼏龪齳齯鼋齫鼉鼅龁 齻鼁鼀

Drupal\Core\Config\Config:: getSchemaWrapper ()

龧龣龊龉龬齫 schemaWrapper 黱黯黮齚齜龧龣龊龉齫龅龄龃齧齣龊龉龁黪 getSchemaWrapper() 鼉鼅黦黣黠黝黚龁黙黗黓黯黐鼀 protected 龁龶龧龣龊龉齫齅黉龬黦黚齜鼉鼅黈黆龧龣齧齣齫龅龄黄黀龁龶麽麻齓龬麸黆麴鼁鼉鼅麰麬黗麴龶麫黠齳齯龧龣龊龉齫龅龄龃齧齣龊龉鼀

$typedConfigManager = \Drupal::service("config.typed");
//获取类型化配置管理器 
$name = "system.site";
//示例一个配置对象 
$data = \Drupal::configFactory()->getEditable($name)->getRawData();
//实时获取配置对象中储存的数据,配置对象如果被修改,得到的是修改后的值
$definition = $typedConfigManager->getDefinition($name);
//得到配置类型的插件定义,也就是schema配置文件中的内容,但经过递归合并,暂未处理动态类型
$data_definition = $typedConfigManager->buildDataDefinition($definition, $data);
//构建返回类型化数据对象的定义对象,因为schema定义中type属性允许动态内容
//(如[%parent.%parent.%type].third_party.[%key]),所以需要传递配置对象的数据参数
$typed_data = $typedConfigManager->create($data_definition, $data);
//创建类型化对象,最终我们得到了一个类型化配置数据对象

齻鹬鷾鷺鷶鹧鹣龧龣齫鷵鷳鹖黗麴黚麴鼁鷲鷯鼉鼅鼀

$typedConfigManager = \Drupal::service("config.typed");
//获取类型化配置管理器 
$name = "system.site";
//示例一个配置对象 
$typed_data = $typedConfigManager->get($name); 
//从类型化配置管理器中直接获取配置对象的类型化数据对象,但配置值是来自配置储存服务的

黐鷛鷘鷖鷔龁麴鼁麴龧龣齅鷑龅龄鷥鷎鷌鼀

        $typedConfigManager=\Drupal::service("config.typed");
        $definition=$typedConfigManager->getDefinition("config_entity");
        print_r($definition);
        exit();

齳齯齫齈齇鷆齚鼀

Array
(
    [label] => Mapping
    [class] => Drupal\Core\Config\Schema\Mapping
    [definition_class] => \Drupal\Core\TypedData\MapDataDefinition
    [mapping] => Array
        (
            [uuid] => Array
                (
                    [type] => string
                    [label] => UUID
                )

            [langcode] => Array
                (
                    [type] => string
                    [label] => Language code
                )

            [status] => Array
                (
                    [type] => boolean
                    [label] => Status
                )

            [dependencies] => Array
                (
                    [type] => config_dependencies
                    [label] => Dependencies
                )

            [third_party_settings] => Array
                (
                    [type] => sequence
                    [label] => Third party settings
                    [sequence] => Array
                        (
                            [type] => [%parent.%parent.%type].third_party.[%key]
                        )

                )

            [_core] => Array
                (
                    [type] => _core_config_info
                )

        )

    [type] => config_entity
)

鶶鶲鼀鷭龅龄龃龧龣齖齕齓龬齳齯齈齇鹶 third_party_settings 鶮龬齫鶬鶪龅龄齫鹂鹀鶦鶣鹌鶠鶝鹨鶛鶙龁鶗鶖鶓鶐鶍鷥齈齇龬齫鼀

[type] => [%parent.%parent.%type].third_party.[%key]

齜鶉鶈齫鶛鶙鶇鶅齚龶龅龄龃龊龉麎麌齜鶁鶮齫龅龄龃齧齣龊龉鹶黈黆齫龁鹖黮齚 $typed_data->get($name) , 黙龬鸉齧 name 黗麴齚黚鵿鵾鵻齫鵺鼏齧鵹鵷鵵齫鵴鵲鵯龁龀鷆龶龅龄龃龧龣齖齕齓齫 buildDataDefinition 鼉鼅龬黈黆鶛鶙鹅齕龁鸍鵭齫鵩鵦麈鸉齧 $data 齚龊鵢齫龧龣鹞

mapping龎sequence鼀

龶龧龣鵟鵝龬鵙鵘鵔齧齣龅龄龁鹌鷾齚黝黚龅龄龃鵹鹙鵒鵑齫鼀

Drupal\Core\TypedData\Plugin\DataType\Map

Drupal\Core\TypedData\Plugin\DataType\ItemList

鶶鶲鷾鸑鷆鵋麬鵊鵇龁mapping龎sequence鵅龶龧龣鵟鵝龬黝黚龁鵋麬齚鼀

\Drupal\Core\Config\Schema\Mapping

\Drupal\Core\Config\Schema\Sequence

鵋麬鵄齚龅龄龃齧齣龊龉鼀鵂鴾龎鶬鶪齫龅齅黉龁黪mapping龎sequence齚鴼龊龧龣鵟鵝齫鴻鴸齅黉龁鴷鴵龪鷾鴳龅龁齅黉龪鷦鴰鼀Drupal\Core\Config\Schema\TypedConfigInterface

Schema鴮齈齇鼀

龧龣龊龉齫schema齈齇齚黗鴭齫龁齻鹬龧龣龊龉鶠鶝龊鵢齈齇schema龁龀齽鴬鴨鷵鷳鼁麎麌龅龄龊龉鹶鴤鴣undefined龅龄鹅齕龁齐齌龲鹕麎麌齯齫龅龄龊龉齚Drupal\Core\Config\Schema\Undefined龅齫齅齁龁齜龅龄龃龧龣龊龉黗麴黝黚齻鼁鼉鼅齳齯鶓鹰齫鹞鼀

$typed_data->getValue();

黪齚龶鴜鴚鴗鴔鹶龁鶠鶝齈齇龧龣schema齫龧龣龊龉齚麴config_object龅龄黈黆鹅齕龁鸫鴑鶓鹰齫龧龣黣鹓鴐鶝langcode龎_core黱黯

鴍鴉鴆龧龣龊龉鹶鴄齈齇龪schema黗麴黝黚齻鼁鼉鼅鼀

$typedConfigManager=\Drupal::service("config.typed");

$typedConfigManager –>hasConfigSchema($name); //鷆鸳鸯鳾鳼鹞

Undefined龎ignore龅龄齫鳺鳶鼀

鵋麬鵅齚鳵鵺齫鶲齇鷾鴳龁齻鵴鳴鶲鳲龁麊麈鳵鵺鹆齈齇龁麊麈鳵鵺鳱鳰鷾鷺鷶龅龄龁黪齚齅黉龲鼽鳬鳫鴳龁鸫鴑黝黚鼉鼅鳪鳫鴳鳧鳥龣ignore龅龄龶鶝鳢鷵鷳鼁鳡鶝黚龁鳠齻龶鳜鳙schema齈齇鶝鳕黯鹶龁齻鹬齚鹆齈齇龁鵺鼏schema齈齇鷾齐齌龁鸓鸑鷛黀龁齻鹬鷌鳔鳒鳎齚ignore龅龄龀齽鳜鳙鷆齐齌

鳍龯黮鳋鳈齯鵙鳄龁麴鹠齫鳃鳂龬鲿鷆鲾鲻鳋鳈龧龣鴗鴔鲺鲹鵭鲺鳠鲸鲴龁龧龣鵟鵝鳡鲱龁龎黙鵋鵹鹙鶝鲮鲬鹎龁鲩鹠鳋鳈齫鳃鳂鲧鲤龧龣黣鹓鹶鲢鳂鷾鲡鲟鲜黚龧龣鵟鵝鲙鲕龁齻齚鲟鲜鳋鳈龧龣鵟鵝鴆鴚黣鹓鲓鶖麴鳍龯鲢鳂齫鲒鲑鹑鲏鶬鲕龁鲍鲉鼘鳋鳈齫黣鹓鲇鲄齕鲂齅鷑龧龣龁鼁龯鷆鲬鹎齅鷑鵟鵝龁鳋鳈龧龣齅鷑鼉鳴齫黣鹓鲁

黐龪鲀鱾黣鹓鹶鼘鼔鱽鱼鲉鱼鱻鱹龁鱶鱳鳍鵟鶪鳃鳂齫鱯鳾鱬鶬鱩鱨鲀鱾

本书共63小节:

评论 (写第一个评论)