esign/craft-cms-crud

本模块包含Craft CMS的基本CRUD编程函数

安装: 152

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

公开问题: 1

类型:craft-plugin

1.1.4 2023-11-27 16:30 UTC

README

本模块包含Craft CMS的基本CRUD函数

安装

您可以通过composer安装此包,并通过Craft安装它

composer require esign/craft-cms-crud && php craft plugin/install craft-cms-crud 

用法

updateOrCreateEntry

目前只有一个函数,即updateOrCreateEntry,它可以更新条目及其所有字段(字段、矩阵块和嵌套条目)

$entry必须是esign\craftcmscrud\support\CraftEntry的实例,这样我们就可以确保所有字段都可以正确映射

use esign\craftcmscrud\controllers\CraftEntryController;

class YourController extends CraftEntryController
{
    CraftEntryController::updateOrCreateEntry($entry);
}

条目对象

CraftEntry.php

use esign\craftcmscrud\support\CraftEntry;

new CraftEntry(
    $handle, 
    $identifier, 
    $fields, 
    $matrixBlocks, 
    $nestedEntries
)

$handle -> 期望您的部分句柄名称

$identifier -> 期望该条目的标识符(用于更新条目而不是创建条目)

$fields -> 期望一个包含您的条目字段的stdClass(包括标题和slug)OR一个包含您的条目字段stdClasses的数组(这用于嵌套条目,稍后详细说明)

$matrixBlocks -> 期望一个CraftMatrixBlock类的数组(见CraftMatrixBlock部分)

$nestedEntries -> 期望一个CraftEntry类的数组

CraftMatrixBlock.php

use esign\craftcmscrud\support\CraftMatrixBlock;

new CraftMatrixBlock(
    $handle, 
    $handleBlock, 
    $fields
)

$handle -> 期望您的字段句柄名称

$handleBlock -> 期望您的矩阵块句柄名称

$fields -> 期望一个包含您的矩阵字段stdClasses的数组

CraftAsset.php

use esign\craftcmscrud\support\CraftAsset;

new CraftAsset(
    $handle,
    $imageUrl,
    $filename,
    $path,
)

$handle -> 期望您的字段句柄名称

$imageUrl -> 期望您的外部图像URL

$filename -> 期望文件名

$path -> 期望您的资产字段路径

示例

use esign\craftcmscrud\controllers\CraftEntryController;
use esign\craftcmscrud\support\CraftEntry;
use esign\craftcmscrud\support\CraftMatrixBlock;

CraftEntryController::updateOrCreateEntry(
    new CraftEntry(
        self::HANDLE_CLUB,
        self::IDENTIFIER_CLUB,
        ClubModel::fieldsFromClub($club),
        [
            new CraftMatrixBlock(
                self::HANDLE_OPENING_HOURS,
                self::HANDLE_OPENING_HOURS_BLOCK,
                $club->{self::HANDLE_OPENING_HOURS}
            ),
            ...
        ],
        [
            new CraftEntry(
                self::HANDLE_CLUB_TAGS,
                self::IDENTIFIER_CLUB_TAGS,
                ClubModel::collectionFieldsFromClubTags($club->{self::HANDLE_CLUB_TAGS})
            ),
            ...
        ],
        [
            new CraftAsset(
                self::HANDLE_IMAGE,
                $contract->mlContractImageUrl,
                StringHelper::beforeFirst(StringHelper::afterLast($contract->mlContractImageUrl, '/'), '?'),
                self::HANDLE_IMAGE_PATH
            )
        ],
    ),
);

parseNestedMatrixBlocks

use esign\craftcmscrud\controllers\CraftEntryController;
use esign\craftcmscrud\support\CraftEntry;
use esign\craftcmscrud\support\CraftMatrixBlock;

public const MATRIX_BLOCKS_CONTRACT_TERM = [
    'mlTermPriceAdjustmentRules' => 'mlPriceBlock',
    'mlTermFlatFees' => 'mlFeeBlock',
    'mlTermOptionalModules' => 'mlOptionalBlock',
    'mlTermRateBonusPeriods' => 'mlBonusBlock',
];

CraftEntryController::updateOrCreateEntry(
    new CraftEntry(
        self::HANDLE_CONTRACT,
        self::IDENTIFIER_CONTRACT,
        Entry::fieldsFromContract($contract),
        null,
        [
            new CraftEntry(
                self::HANDLE_CONTRACT_TERM,
                self::IDENTIFIER_CONTRACT_TERM,
                Entry::collectionFieldsFromContractTerms(
                    $contract->{self::HANDLE_CONTRACT_TERM}
                ),
                CraftEntryController::parseNestedMatrixBlocks(
                    $contract->{self::HANDLE_CONTRACT_TERM},
                    self::MATRIX_BLOCKS_CONTRACT_TERM
                ),
            ),
        ],
    ),
);

CraftEntryController::parseNestedMatrixBlocks()用于解析嵌套矩阵块。

MATRIX_BLOCKS_CONTRACT_TERM是$sectionHandle => $blockHandle