Если я правильно понимаю ваш вопрос, вы можете сделать несколько вещей ...
(я предполагаю, что у вас есть частичный файл вида, например views / model / _list.php.)
Вы можете выполнить renderPartial ('/ model / _list') при начальной загрузке страницы, а затем в вашем действии AJAX просто снова вызвать renderPartial ('/ model / _list').
Или вы можете просто использовать действие AJAX (содержащее renderPartial ('/ model / _list')) и вызывать его при загрузке страницы с помощью jQuery вместо рендеринга в виде (просто вызовите Yii :: app () -> getClientScript () -> registerScript в вашем представлении, куда вы хотите его загрузить, и используйте $ .ajax () или что-то еще для выполнения вызова).
Третье, что я сделал, это сделал функцию в контроллере (а не действие , просто обычный публичный метод), который возвращает вывод renderPartial (return $ this-> renderPartial ('/ model / _list ', array (), true) я думаю). Затем с учетом начальной загрузки я повторяю эту функцию, а в действии ajax я повторяю ее перед вызовом Yii :: app () -> end ();.
Виджеты полезны, когда вы будете рендерить немного частичного кода по всему сайту, даже на страницах с разных контроллеров. Поэтому, если этот список находится на боковой панели по всему сайту, возможно, было бы лучше сделать из него виджет, иначе я бы просто использовал контроллер той модели, с которой вы работаете. То, что вы будете делать с виджетом, будет таким же, как и в обычном представлении - либо создайте данные в виджете и визуализируйте частичный вид, либо вызовите его через AJAX. Что бы вы, вероятно, сделали для AJAX, это POST для контроллера, с которого вы получаете данные, поэтому вам все равно понадобится действие AJAX. Виджет просто упростит размещение в разных местах сайта.
Удачи!