Fi1osof 01 ноября 2015 0 0
Сегодня на modx.pro было небольшое обсуждение MODx.add() VS renderTo, но из-за неподобающего поведения обеих сторон (а может еще чего-то), топик был скрыт с публикации. Тем не менее там была, на мой взгляд, довольно полезная информация. Вот чтобы ее не терять, публикую здесь. Кому-нибудь наверняка пригодится.

Тема касалась компонента modExtra и правильного рендеринга элементов на страницах админки, типа того, что в modExtra используется renderTo, и что это правильней, чем использовать MODx.add(). Вот итоговая выдержка:

Для начала, закомментрируем renderTo. joxi.ru/nAyz3VMFpO5arZ И обновим страницу компонента. Что мы там видим? Все тот же грид. А почему? А просто потому что на самом деле в modextra-panel-home-div ничто не рендерится. Сам смотри HTML-код. joxi.ru/v29QeZnH1EW52G
Можно даже для чистоты эксперимента вообще удалить из шаблона этот див. joxi.ru/DmBXep0uEXpKAP
Так почему же все-таки грид рендерится? Обрати внимание на этот блок кода. Используется элемент components. А теперь заглянем в modx.component.js в метод _loadComponents(). Что мы там видим?
......
var cp = Ext.getCmp('modx-content');
......
cp.add(a);

А теперь заглянем в modx.js в метод add(). Что там мы видим?
.....
var ctr = Ext.getCmp('modx-content');
......
ctr.add(cmp);

Ничего не напоминает?

А теперь возьмем и закомментрируем в modExtra components joxi.ru/p278ek3hyQYYA7, а в контроллере пропишем загрузку компонента именно через renderTo. joxi.ru/E2pv5o9fRd6OrY
И что мы получили? Теперь рендерится именно в modextra-panel-home-div, но скролл пропал. joxi.ru/Y2LjLVESK3oDr6

Резюме: элементы рендерить на админ-страницу лучше через метод MODx.add(). Пример.
0 комментариев
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.