Common Development Tasks With Patternkit
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
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion