Yii2: стратегия предотвращения конфликтов идентификаторов InputWidget

При рендеринге InputWidget в Yii2 id Параметры HTML-тег генерируется автоматически на основе внутреннего статического счетчика экземпляров виджета. По умолчанию idбудет выглядеть w0, w1, w2… в зависимости от того, сколько виджетов было создано. Это прекрасно работает при рендеринге всей страницы сразу.

Но это быстро становится проблематичным при введении частичного рендеринга (такого как AJAX), потому что каждый последовательный рендеринг страницы начинается со счетчика виджетов в 0, поэтому, если мы внедрим такие виджеты в уже отрендеренную страницу, мы получим конфликты идентификаторов (например, у нас может быть два виджета с одинаковым идентификатором w0). Это нарушает стандарты HTML, вызывает проблемы с JavaScript и другие головные боли.

Так каковы возможности вокруг этого?

  • Самый очевидный способ обойти это, конечно, вручную установить id в жестко закодированную строку. Но теперь нам нужно знать, сколько раз будет отображаться виджет, и нам нужно добавить много if заявления, чтобы определить, какой идентификатор для визуализации. Это работает, но очень хакерски.
  • Автоматическое добавление или добавление виджета id с id его родительского контейнера. Это звучит хорошо в теории, но я до сих пор не смог понять это.
  • Модификация Yii2 InputWidget использовать UUID (универсальный уникальный идентификатор) вместо счетчика. Это звучит многообещающе, но требует исправления базовой платформы (в противном случае он не будет работать для сторонних виджетов) и делает невозможным прогнозирование идентификаторов (например, при тестировании).

Какой самый универсальный решение для этого?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]