Common Development Tasks With Patternkit

Last updated on
21 February 2023

Loading a Discovered Pattern

$pattern_id = '@patternkit/atoms/example/src/example';
$pattern = \Drupal::service('patternkit.pattern.repository')
  ->getPattern($pattern_id);

Getting a Loaded Pattern Schema

$pattern = \Drupal::service('patternkit.pattern.repository')
  ->getPattern('@patternkit/atoms/example/src/example');
$schema = $pattern->getSchema();

Getting a Bundled Pattern Schema

When loading a Pattern, sometimes the schema needs to have all dependencies bundled in with it to mitigate loading issues. This may be accomplished by including an explicit parameter on the pattern repository's getPattern() method call.

$pattern = \Drupal::service('patternkit.pattern.repository')
  ->getPattern('@patternkit/atoms/example_ref/src/example_ref', TRUE);
$bundled_schema = $pattern->getSchema();

Getting a Loaded Pattern Template

$pattern = \Drupal::service('patternkit.pattern.repository')
  ->getPattern('@patternkit/atoms/example/src/example');
$template = $pattern->getTemplate();

Getting pattern dependencies

An unlimited cardinality field on the patternkit_pattern entity populated during pattern discovery with references discovered immediately within a pattern's schema file.

This list of dependencies may be retrieved from an instantiated pattern entity with the $pattern->getDependencies() method. Note this field is only populated with dependencies referenced directly within the pattern's schema. To identify any further dependencies referenced from those dependencies the new patternkit.pattern.dependency_resolver service may be used.

$pattern = \Drupal::service('patternkit.pattern.repository')
  ->getPattern('@patternkit/atoms/example_ref/src/example_ref');
print_r($pattern->getDependencies());
//Array
//(
//   [0] => Array
//    (
//     [value] => @patternkit/atoms/example/src/example
//    )
//)

Listing All Discovered Patterns

$patternRepository = \Drupal::service('patternkit.pattern.repository');
foreach ($patternRepository->getAllPatternNames() as $pattern) {
  // Do something with each pattern.
}

Help improve this page

Page status: No known problems

You can: