При рендеринге InputWidget в Yii2 id
Параметры HTML-тег генерируется автоматически на основе внутреннего статического счетчика экземпляров виджета. По умолчанию id
будет выглядеть w0
, w1
, w2
… в зависимости от того, сколько виджетов было создано. Это прекрасно работает при рендеринге всей страницы сразу.
Но это быстро становится проблематичным при введении частичного рендеринга (такого как AJAX), потому что каждый последовательный рендеринг страницы начинается со счетчика виджетов в 0
, поэтому, если мы внедрим такие виджеты в уже отрендеренную страницу, мы получим конфликты идентификаторов (например, у нас может быть два виджета с одинаковым идентификатором w0
). Это нарушает стандарты HTML, вызывает проблемы с JavaScript и другие головные боли.
Так каковы возможности вокруг этого?
id
в жестко закодированную строку. Но теперь нам нужно знать, сколько раз будет отображаться виджет, и нам нужно добавить много if
заявления, чтобы определить, какой идентификатор для визуализации. Это работает, но очень хакерски.id
с id
его родительского контейнера. Это звучит хорошо в теории, но я до сих пор не смог понять это.InputWidget
использовать UUID (универсальный уникальный идентификатор) вместо счетчика. Это звучит многообещающе, но требует исправления базовой платформы (в противном случае он не будет работать для сторонних виджетов) и делает невозможным прогнозирование идентификаторов (например, при тестировании).Какой самый универсальный решение для этого?
Задача ещё не решена.
Других решений пока нет …