Aller au contenu

Référence de l'API

phil/content-bundle

Chaque classe et interface du bundle, par couche. Tous les espaces de noms sont sous Phil\ContentBundle. « Port » désigne une interface que l'application peut implémenter ou remplacer ; « implémenté », une classe que fournit le bundle. Chaque entrée ici est implémentée et testée ; ce qui n'est pas commencé est listé à la fin.

La classe du bundle

ClasseRôle
PhilContentBundleL'AbstractBundle : arbre de configuration sous phil_content, constantes d'étiquettes (DATA_MAPPER_TAG, MERGER_TAG, NORMALIZER_TAG, CAPABILITY_MAPPING_TAG), configuration Doctrine ajoutée en tête avec DoctrineBundle, et services (configuration.md)

Domaine

Domain\Content

ClasseGenreRôle
ContentRootportUne racine : createDimensionContent(DimensionKey)
DimensionContentportUne ligne : root(), dimension()
AbstractContentRootimplémenté, superclasse mappéeBase des entités racines de l'application : dimensionContentClass(), resourceKey()
AbstractDimensionContentimplémenté, superclasse mappéeBase des entités de ligne de l'application : colonnes d'identifiant et de dimension, constructeur final
DimensionContentIdimplémentéIdentifiant de substitution UUIDv7 d'une ligne (Identifier de phil/ddd-bundle)

Domain\Dimension

ClasseGenreRôle
DimensionKeyimplémentéLocale (ou aucune), étape et version d'une ligne
Stageimplémenté, énumérationDraft, Live
DimensionLocalesimplémentéUne locale lue et sa chaîne trouvée, refusées par InvalidDimension

Locale, Version, FallbackChain et DeclaredLocales sont les objets valeur de phil/locale-dimensions.

Domain\Capability

ClasseGenreRôle
TemplateCapable, TemplateTraitport et traitClé de gabarit et valeurs des champs
WorkflowCapable, WorkflowTraitport et traitPlace dans le workflow et date de la dernière publication
SeoCapable, SeoTraitport et traitTitre, description, mots-clés et URL canonique de référencement, trois directives
ExcerptCapable, ExcerptTraitport et traitTitre, description et référence d'image d'accroche
LinkCapable, LinkTraitport et traitUn Link
RoutableCapable, RoutableTraitport et traitUn Slug
BodyCapable, BodyTraitport et traitUn Body
CapabilityTextimplémentéLes vérifications des valeurs de texte libre (text(), line(), reference())

Domain\ValueObject

ClasseRôle
BodySource, MarkupFormat et HTML compilé d'un texte principal
ContentReferenceresource_key:identifier, une racine nommée depuis l'extérieur du stockage
LinkUne racine de contenu (clé, identifiant, locale facultative) ou une Url de phil/url
SlugDes mots en minuscules reliés par des traits d'union, d'au plus 255 caractères

Domain\Routing

ClasseRôle
RouteEntité de phil_content_route : une adresse, actuelle ou d'historique
RouteIdIdentifiant de substitution UUIDv7 d'une route

Domain\Draft

ClasseRôle
WorkingCopyEntité de phil_content_working_copy : l'enregistrement automatique d'un auteur ou un brouillon nommé d'un contenu dans une locale
WorkingCopyIdIdentifiant UUIDv7 d'une copie de travail

Domain\Contract

InterfaceGenreRôle
WorkingCopyRepositoryportLes enregistrements automatiques par auteur, les brouillons nommés par nom, toutes les copies de travail d'un contenu

Domain\Repository

InterfaceGenreRôle
DimensionContentRepositoryportLes lignes par dimension, par étape et version, les versions d'une locale, les dernières versions
RouteRepositoryportLes routes par slug et par contenu, les routes actuelles de plusieurs contenus
ContentRootRepositoryportLes racines par référence, les références des racines
PublishedRowRepositoryportUne page des lignes publiées d'un genre dans une locale
PublishedRowQuery, PublishedOrder, PublishedRowvaleurCe que lit PublishedRowRepository, dans quel ordre, et chaque ligne trouvée avec sa ligne partagée

Domain\Exception

Chaque classe implémente Phil\DddBundle\Domain\Exception\DomainError.

ClasseÉtendQuand
InvalidDimensionInvalidArgumentExceptionUne locale mal formée ou non servie, l'InvalidLocaleDimension de phil/locale-dimensions gardée comme précédente ; une ligne fusionnée sur une autre qui n'est pas sa contrepartie
InvalidContentInvalidArgumentExceptionUne valeur de capacité, une référence, un slug, une URL ou un lien refusés
ContentNotFoundRuntimeExceptionAucune ligne, racine, contenu en ligne, enregistrement automatique ou brouillon nommé là où il en faut un
SlugTakenRuntimeExceptionLe slug est l'adresse actuelle d'une autre racine
TransitionRefusedRuntimeExceptionLe workflow ne permet pas l'opération

Application

ClasseGenreRôle
ContentManagerimplémentéL'interface PHP : créer, modifier, publier, dépublier, retirer un brouillon, supprimer, lire, lister, état
ContentStatusimplémentéL'endroit où se trouve une locale d'une racine
Content\SingleKindsimplémentéLes genres qui n'ont qu'un seul contenu
Contract\CanonicalAddressesportL'adresse absolue d'un contenu dans une locale
Contract\PublicationScheduleportPublier ou mettre hors ligne à un moment fixé
Exception\PublicationLosesContentexceptionUne publication refusée pour ce que son corps perdrait en UJO, avec les pertes
Editing\WorkingCopiesimplémentéL'enregistrement automatique privé de chaque auteur et les brouillons nommés d'un contenu
Editing\AuthorRawHtmlimplémentéLa permission d'écrire du HTML brut de l'auteur de la révision en cours : l'utilisateur au travail, ou l'auteur de la copie de travail appliquée
Publication\PageEventsimplémentéLes événements PagePublished et PageRetired de phil/publishing, lus sur la ligne en ligne
Publication\ContentArchive, Publication\ArchivedVersionimplémenté, valeurL'archive datée d'un genre, et une publication qu'elle contient
Publication\ScheduledPublicationvaleurUne transition prévue pour un moment
Content\ContentRootFactoryportConstruit une nouvelle racine d'un genre
Persistence\ContentTransactionportL'unité de travail d'une opération
Pipeline\DataMapper, Pipeline\Merger, Pipeline\NormalizerportsLes trois étapes du pipeline
Pipeline\ContentDataMapperimplémentéExécute chaque mappeur de données
Pipeline\ContentAggregatorimplémentéFusionne une ligne localisée par-dessus sa ligne partagée, le long d'une chaîne
Pipeline\ContentNormalizerimplémentéExécute chaque normaliseur, refuse une clé répétée
DataMapper\TemplateDataMapper, SeoDataMapper, ExcerptDataMapper, LinkDataMapper, RoutableDataMapper, BodyDataMapperimplémentéUn mappeur de données par capacité (aucun pour le workflow)
DataMapper\SubmittedDataimplémentéLecteurs typés des données soumises
Contract\RawHtmlPermissionportSi l'utilisateur au travail a le rôle de confiance : les corps qu'il écrit le retiennent, montrent son HTML brut et le gardent une fois publiés, par n'importe qui
Merger\TemplateMerger, WorkflowMerger, SeoMerger, ExcerptMerger, LinkMerger, RoutableMerger, BodyMergerimplémentéUn fusionneur par capacité
Normalizer\TemplateNormalizer, WorkflowNormalizer, SeoNormalizer, ExcerptNormalizer, LinkNormalizer, RoutableNormalizer, BodyNormalizerimplémentéUn normaliseur par capacité
Editing\ContentEditorimplémentéÉcrit des données soumises sur le brouillon d'une locale, en créant versions et lignes au besoin
Publication\ContentWorkflowimplémentéLa machine à états de symfony/workflow
Publication\ContentPublisherimplémentéPublier, dépublier, retirer un brouillon ; un corps publié en UJO
Publication\BodyConverterportLe corps d'un brouillon converti en l'UJO qu'enregistre une ligne publiée
Contract\ConversionLosses, Publication\ConversionLossport, valeurCe que la conversion d'un corps en UJO ne garde pas
Publication\ContentVersionsimplémentéDernière version de brouillon, versions figées, nouvelles versions
Publication\DimensionContentCopierimplémentéCopie une ligne vers une autre dimension par les fusionneurs
Publication\LiveContentReaderimplémentéCe qui est servi à un lecteur le long d'une chaîne
Routing\RouteUpdaterimplémentéDisponibilité des slugs et routes actuelles
Routing\RouteResolverimplémentéD'un slug à une route à servir ou vers laquelle rediriger
Routing\RouteMatchimplémentéLe résultat d'une résolution
Rendering\TemplateResolverimplémentéDe la clé de gabarit au gabarit Twig

Infrastructure

Infrastructure\Doctrine

ClasseRôle
DoctrineDimensionContentRepositoryAdaptateur de DimensionContentRepository
DoctrineRouteRepositoryAdaptateur de RouteRepository
DoctrineContentRootRepositoryAdaptateur de ContentRootRepository
DoctrinePublishedRowRepositoryAdaptateur de PublishedRowRepository
RootIdentifiersL'identifiant d'une racine tiré de sa chaîne, et lié dans une liste IN comme son type DBAL l'enregistre
DoctrineContentTransactionAdaptateur de ContentTransaction
ConstructorContentRootFactoryAdaptateur de ContentRootFactory, constructeur sans arguments
ContentRootsLes classes racines déclarées, leurs classes de ligne et leurs clés de ressource
DimensionContentMappingListenerloadClassMetadata : association à la racine, dimension unique, colonnes des capacités
InvalidContentMappingLogicException pour des classes de contenu qui ne s'accordent pas
Mapping\CapabilityMappingBase abstraite des colonnes d'une capacité (point d'extension)
Mapping\TemplateCapabilityMapping, WorkflowCapabilityMapping, SeoCapabilityMapping, ExcerptCapabilityMapping, LinkCapabilityMapping, RoutableCapabilityMapping, BodyCapabilityMappingLes colonnes de chaque capacité
DoctrineWorkingCopyRepositoryAdaptateur de WorkingCopyRepository
Type\LocaleType, StageType, VersionType, DimensionContentIdType, RouteIdType, WorkingCopyIdTypeLes types DBAL

Infrastructure\Http

ClasseRôle
ContentControllerSert le contenu en ligne par slug : 200, 301, 404
ContentUrlGeneratorL'URL de la route actuelle d'une racine
ResourceRoutesLes routes Symfony qui servent chaque genre
ContentCanonicalAddressesAdaptateur de CanonicalAddresses sur le routeur
ArchiveControllerSert une version datée d'un contenu d'un genre archivé
ContentAdminControllerL'administration : liste, création, écran de modification, enregistrement automatique
FeedController, PreviewController, PreviewLinksLes flux Atom, les aperçus de brouillons et leurs liens signés

Infrastructure\EasyAdmin

ClasseRôle
ContentAdminL'entrée de menu d'un tableau de bord EasyAdmin qui mène à l'administration

Infrastructure\Scheduling

ClasseRôle
ScheduledTransitionsPublicationScheduleAdaptateur de PublicationSchedule sur phil/scheduled-transitions-bundle
PublicationReferencesUne publication nommée news:42@fr pour ce bundle, et relue
PublicationSubjectsLe résolveur par lequel le gestionnaire de workflow de ce bundle trouve les publications
ClasseRôle
ContentDocumentProviderLe DocumentProvider de phil/search-bundle qui lui fournit les lignes en ligne

Infrastructure\Markup

ClasseRôle
Markup\MarkupServicesEnregistre les adaptateurs par défaut de phil/markup et le convertisseur du bundle, et fait des trois ports des alias vers eux
Markup\UjoBodyConverterAdaptateur de BodyConverter et de ConversionLosses : les lecteurs de phil/markup, l'encodeur de phil/ujo, compilé et purifié
Markup\RawHtmlRoleAdaptateur de RawHtmlPermission : le rôle de confiance de raw_html_role, vérifié par le vérificateur d'autorisation de Symfony
Markup\RawHtmlAuthorPassPasse de compilation : avec une RawHtmlPermission, l'enveloppe dans AuthorRawHtml pour BodyDataMapper et WorkingCopies, et dit à UjoBodyConverter que le HTML brut est configuré

Infrastructure\Twig

ClasseRôle
ContentExtensionDéclare les sept fonctions Twig
ContentRuntimeLes implémente, construit à la demande

Infrastructure\Console

ClasseRôle
ContentCommandBase abstraite : options de données, DomainError sous forme de message d'erreur
CreateContentCommand, EditContentCommand, PublishContentCommand, UnpublishContentCommand, ListContentCommandphil:content:create, edit, publish, unpublish, list
SubmittedFieldsLit --file, --field et --json

ContentManager::removeDraft() et ContentManager::delete() n'ont pas de commande de console ; on les appelle depuis PHP ou, pour le premier, depuis l'administration.