1. The PHP file is implemented as follows:
<?php
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
Log::info(
'v2.1.3_migrate_index.php_schema_0',
[
'schema' => $schema
]
);
$settings = ['text_color', 'mask_opacity', 'button_text_color', 'button_background_color'];
if (Arr::has($schema, 'sections')) {
foreach ($schema['sections'] as $sectionKey => $section) {
if (Arr::get($section, 'type') == 'multi-column') {
foreach ($settings as $setting) {
if (Arr::has($section, 'settings.' . $setting)) {
if ($setting == 'mask_opacity') {
$value = (bool)Arr::get($section, 'settings.' . $setting);
} else {
$value = Arr::get($section, 'settings.' . $setting);
}
foreach ($section['blocks'] as $blockKey => $block) {
Arr::set($schema, 'sections.' . $sectionKey . '.blocks.' . $blockKey . '.settings.' . $setting, $value);
}
Arr::forget($schema, 'sections.' . $sectionKey . '.settings.' . $setting);
}
}
}
}
}
Log::info(
'v2.1.3_migrate_index.php_schema_1',
[
'schema' => $schema
]
);
return $schema;2. The initial $schema, namely [2023-05-17 09:45:23] local.INFO: v2.1.3_migrate_index.php_schema_0, has the following value:
{
"schema": {
"sections": {
"4imagetext_t0upqwh3": {
"type": "multi-column",
"disabled": false,
"settings": {
"heading": "",
"heading_align": "center",
"text_color": "#000",
"image_size": "auto",
"mask_opacity": 0,
"button_text_color": "#000",
"button_background_color": "#fff",
"text_align": "center"
},
"blocks": {
"column-0": {
"type": "column",
"settings": {
"heading": "IMAGE WITH TEXT",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/cafe2c8e6451a85f66aedbc62af22747f711c3f2.jpeg",
"mobile_image": "",
"url": "/",
"label": "MORE INFO"
}
},
"column-1": {
"type": "column",
"settings": {
"heading": "IMAGE WITH TEXT",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/b55803eeb93eba8bb0b8bc4bb4be7ad16df74ad1.jpeg",
"mobile_image": "",
"url": "/",
"label": "MORE INFO"
}
},
"column-2": {
"type": "column",
"settings": {
"heading": "IMAGE WITH TEXT",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/083a9e7fbe2b3856aecb84a2387f82eea0bb0f39.jpeg",
"mobile_image": "",
"url": "/",
"label": "MORE INFO"
}
}
},
"block_order": [
"column-0",
"column-1",
"column-2"
]
}
},
"order": [
"4imagetext_t0upqwh3"
]
}
}
3. However, the returned $schema, namely [2023-05-17 09:45:23] local.INFO: v2.1.3_migrate_index.php_schema_1, does not meet expectations. Its data is lost. The fields: type, settings, block_order, etc., in sections.4imagetext_t0upqwh3 are all lost. As shown in Figure 1:
![However, the returned $schema, namely [2023-05-17 09:45:23] local.INFO: v2.1.3_migrate_index.php_schema_1, does not meet expectations. Its data is lost. The fields: type, settings, block_order, etc., in sections.4imagetext_t0upqwh3 are all lost.](https://media.shuijingwanwq.com/2023/06/1-6.png)
{
"schema": {
"sections": {
"4imagetext_t0upqwh3": {
"blocks": {
"column-0": {
"settings": {
"button_background_color": "#fff"
}
},
"column-1": {
"settings": {
"button_background_color": {
"blocks": {
"column-0": {
"settings": {
"button_background_color": "#fff"
}
}
}
}
}
},
"column-2": {
"settings": {
"button_background_color": {
"blocks": {
"column-0": {
"settings": {
"button_background_color": "#fff"
}
},
"column-1": {
"settings": {
"button_background_color": {
"blocks": {
"column-0": {
"settings": {
"button_background_color": "Over 15 levels deep, aborting normalization"
}
}
}
}
}
}
}
}
}
}
}
}
},
"order": [
"4imagetext_t0upqwh3"
]
}
}
4. However, executing this PHP file alone returns a $schema that meets expectations. The unexpected execution in step 3 likely stems from something prior to executing this PHP file affecting its execution.
{
"schema": {
"schema": {
"order": [
"4imagetext_t0upqwh3"
],
"sections": {
"4imagetext_t0upqwh3": {
"type": "multi-column",
"blocks": {
"column-0": {
"type": "column",
"settings": {
"url": "/",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/cafe2c8e6451a85f66aedbc62af22747f711c3f2.jpeg",
"label": "MORE INFO",
"heading": "IMAGE WITH TEXT",
"mobile_image": ""
}
},
"column-1": {
"type": "column",
"settings": {
"url": "/",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/b55803eeb93eba8bb0b8bc4bb4be7ad16df74ad1.jpeg",
"label": "MORE INFO",
"heading": "IMAGE WITH TEXT",
"mobile_image": ""
}
},
"column-2": {
"type": "column",
"settings": {
"url": "/",
"text": "Use these blocks to share your brand's story. You can focus on a particular collection, a product detail, or even embed a video.",
"image": "https://cdn.cloudfastin.com/image/083a9e7fbe2b3856aecb84a2387f82eea0bb0f39.jpeg",
"label": "MORE INFO",
"heading": "IMAGE WITH TEXT",
"mobile_image": ""
}
}
},
"disabled": false,
"settings": {
"heading": "",
"image_size": "auto",
"text_align": "center",
"text_color": "#000",
"mask_opacity": 0,
"heading_align": "center",
"button_text_color": "#000",
"button_background_color": "#fff"
},
"block_order": [
"column-0",
"column-1",
"column-2"
]
}
}
}
}
}
5. The root cause was ultimately confirmed: before executing this PHP file, another PHP file was executed that used a reference: &$value. The two PHP files were executed sequentially using include.
<?php
use Illuminate\Support\Arr;
if (Arr::has($schema, 'sections'))
{
foreach ($schema['sections'] as &$value) {
// ...
}
}
return $schema;6. Replace $value with $sectionSettingValue to temporarily work around the variable name conflict caused by the reference.
