Мне интересно, можем ли мы заполнить глобальные поля в Craft3 и как это сделать.
Как и всякий раз, когда я настраиваю новый проект, выполняется миграция, которая создает некоторые глобальные поля и поля. Это уже дает мне, например, поля политики cook ie и таблицы cookie в глобальных переменных для каждого нового проекта. Теперь я хотел бы прекратить выполнять повторяющуюся работу файлов cookie, которые всегда присутствуют во всех проектах, а также запустить их через миграции, чтобы они были предварительно заполнены.
Любая идея о том, возможно ли это и как это будет go?
Прямо сейчас я иду по этому пути:
//get the matrix field we want to populate
$fieldCookies = Craft::$app->getFields()->getFieldByHandle("fieldCookies");
// get the existing matrixField Value, keep in mind, this is a Query and not an array
$existingMatrixQuery = $element->getFieldValue('fieldCookies');
// serialize the data in order to get an array
$serializedMatrix = $field->serializeValue($existingMatrixQuery, $element);
// append the new blocks to the existing array
$serializedMatrix['item1'] = [
'type' => 'blockTypeHandle',
'fields' => [
// the block's custom field values
'itemTitle' => "Noodzakelijk", //Plaintext
'itemHandle' => "necessary", //Plaintext
'itemText' => "Cookies die noodzakelijk zijn voor een correcte werking van de website.", //Plaintext
'itemRequired' => 1, //Lightswitch
'itemCookies' => [
//This is item of the matrix is a table
//...
]
]
];
$element->setFieldValue('matrixField', $serializedMatrix);
// Save the entry
Craft::$app->elements->saveElement($element);
Мне интересно, если это путь к go, а также если я просто заполнить часть таблицы в этом матрица с вложенным массивом, если миграция будет знать, что она заполняет таблицу.
Мне придется сделать то же самое позже для другого поля, которое не является матрицей, а является суперстабильным. Любые советы приветствуются.