Пытался уже поднимать вопрос. Но, видимо, сумбурно сформулировал. Теперь вроде у самого каши поменьше, да и хоть какой то пример для наглядности задачи есть. Так что попробую еще раз
Нужно создать что-то типа мета-виджета, который не просто динамически(js/ajax) что-то рисует, а может добавлять(удалять) в своё тело другие виджеты Yii. То есть этот мета-виджет должен быть каким то образом(через конфиг) информирован об Yii-классах виджетов, которыми он будет манипулировать. При этом, бд и тд не нужно, то есть редактируемые типы заданы опять же через конфиг мета-виджета. И хотелось бы, чтобы не требовалось никаких добавлений в конечный контроллер.
Я вижу несколько вариантов реализации:
- Без запросов к серверу вообще. Виджеты "рендерятся" клиентом. JS-код сам знает как рисовать все возможные виджеты.
- js-plugin "узнает" о том как и что рисовать на стадии инициализации. То есть, мета-виджет каким то(?) образом передает "шаблоны" известных ему Yii-виджетов, и по этим шаблонам, js на клиенте может рисовать произвольное количество виджетов по шаблонам, без обращения к серверу.
- Самостоятельный js(jquery plugin). Не вариант, ибо нет возможности оперировать Yii-виджетами.
- С запросом к серверу. Виджеты рендерятся сервером и передаются клиенту аяксом.
- Сделать отдельный action, который можно подцепить в конечном контроллере. Этот action возвращает аяксом тело запрошенного виджета, со всеми ресурсами(js/css), а клиент рисует полученное тело и применяет ресурсы.
- Делать какими то стандартными методами типа Pjax. Но я не очень понял как именно. Получается что либо ножно сильно задевать конечный контроллер, либо передавать всё тело мета-виджета. Чёт я тут не понимаю.
Как по мне, так идеальный вариант 1.a, но я пока не понимаю как его реализовать.
Пока что я сделал вариант 2.a:
на сервере
Тут я очевидно что-то намудрил. Не понятно как красиво собрать ресурсы виджета. Пришлось вот так вот через вьюху собирать.
на клиенте
Тут тоже не очень понятно. Сначала пытался сделать в соответсвии с заданными POS для js и по честному вставлять в соответсвующие места документа(POS_HEAD|POS_BEGIN|etc), но в итоге вообще в док вставляю только css и тело, а js применяю средствами jquery всё в куче. Стоит ли заморачиваться с pos?
В общем, либо я сильно чего то не знаю, либо это имхо хорашая тема для cookbook. Так что буду рад любому присутсвию в теме Александра и других авторов
Тут возможно что-то из js кода Yii можно использовать, но я доков не нашел, а в сам код не сильно въехал. Пытался экспериментировать, как то использовать, в итоге треснул на этом и как то забыл про yii.*.js вообще.
Буду рад любому совету!
Спасибо!