Craft 3, возможно ли заполнить глобальные поля путем миграции? - PullRequest
0 голосов
/ 03 марта 2020

Мне интересно, можем ли мы заполнить глобальные поля в 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, а также если я просто заполнить часть таблицы в этом матрица с вложенным массивом, если миграция будет знать, что она заполняет таблицу.

Мне придется сделать то же самое позже для другого поля, которое не является матрицей, а является суперстабильным. Любые советы приветствуются.

...