Currently in 3.0, FormHelper has the chance of generating invalid ID attributes when creating multi-record forms. It also has 0 protection against duplicated ID attributes. Instead of implementing a way to track and increment ID's a more simple solution would be to add an idPrefix option to create():
echo $this->Form->create($article, ['idPrefix' => 'article']);
Then when input() is called the id's would automatically be prefixed with article-. Some additional rules around id prefixing:
Currently input() and label() use _domId() to generate the ids. Instead shouldn't the FormHelper also use the IdGeneratorTrait by either modifying it's _id() method as required or by simply moving FormHelper::_domId() to IdGeneratorTrait::_domId()?
That sounds like a reasonable plan. We would also need to make each of the widgets aware of the idPrefix option and have them use it.
Closing, as #2980 has been opened.