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
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.