public BlockForm::getUniqueMachineName(BlockInterface $block)
Generates a unique machine name for a block.
Parameters
\Drupal\block\BlockInterface $block: The block entity.
Return value
string Returns the unique name.
File
- core/modules/block/src/BlockForm.php, line 408
Class
- BlockForm
- Provides form for block instance forms.
Namespace
Drupal\block
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public function getUniqueMachineName(BlockInterface $block ) { $suggestion = $block ->getPlugin()->getMachineNameSuggestion(); // Get all the blocks which starts with the suggested machine name. $query = $this ->storage->getQuery(); $query ->condition( 'id' , $suggestion , 'CONTAINS' ); $block_ids = $query ->execute(); $block_ids = array_map ( function ( $block_id ) { $parts = explode ( '.' , $block_id ); return end ( $parts ); }, $block_ids ); // Iterate through potential IDs until we get a new one. E.g. // 'plugin', 'plugin_2', 'plugin_3', etc. $count = 1; $machine_default = $suggestion ; while (in_array( $machine_default , $block_ids )) { $machine_default = $suggestion . '_' . ++ $count ; } return $machine_default ; } |
Please login to continue.