esign / craft-cms-crud
本模块包含Craft CMS的基本CRUD编程函数
Requires
- php: ^8.1
- craftcms/cms: ^4.3
This package is not auto-updated.
Last update: 2024-09-16 20:24:26 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