Собственно я слышал про тесную интеграцию yii2 и jquery ui. А что касается сторонних модальных окон, как их красиво подключить ?
Да и вообще если возникает ситуация, когда модальное окно нужно открыть используя js, ну например когда мы голосуем за статью, вылетает модальное окно с предупреждением, что мы уже голосовали.
Можно ли костылить своими скриптами или уже есть что то что облегчит работу ?
Но, в целом, я не очень понимаю, как серверный фреймворк должен помочь с клиентской частью. Вся магическая "интеграция" чаще всего сводится к обертке над jquery-плагином.
Ну, собственно, серверный фреймворк и генерирует эту самую клиентскую часть. Поэтому в нём, например, могут быть языковые структуры, генерирующие код для того же модального окна клиентской части.
@mkharitonov Ну, они есть, да, но сводятся к подключению необходимых файлов (js, css) и навешиванию обработчиков (к примеру, onclick). Но, во-первых, делают это достаточно сомнительным образом (js-код в php-коде), во-вторых - не делают ничего такого, что не умеет обычный рукописный код прямо в шаблоне.
Конкретную задачу про голосование я вообще не понял, поскольку у пользователя ВООБЩЕ не должна отображаться активная кнопка голосовалки с случае наличия информации о том, что он уже голосовал.
Если же взять какой-то другой абстрактный пример (при нажатии кнопки что-то происходит на клиентской стороне) - ну, тут все просто: можно использовать стандартный хелпер для вывода элемента с навешенной логикой. К примеру, ссылка, при нажатии на которую происходит post-запрос, вернувшийся результат изучается и в зависимости от того, что произошло - вызываем либо показ модального окна, либо что-то еще.
Иными словами, можно разрулить на стандартных хелперах/виджетах, да. Но сначала - подумать, стоит ли так делать.
А вот если мне нужно свои прилепить модальные окна и сделать например конфирм перед удалением чего-либо. Нужно шаманить и подключать все это дело к Yii? Или не чем не хуже просто повесить обработчик jquery ?
@nepster09 конкретно по этому вопросу - достаточно в JS-коде переопределить yii.allowAction, заменив на свой обработчик. Вот и все шаманство :)
На англофоруме я показывал, как это делается.
Еще часто требуется прицепиться к стандартным хукам activeForm.js, чтобы выполнять свои действия в нужный момент (после клиентской валидации, но до сабмита, к примеру).
Во всех остальных случаях разницы особо никакой нет.