Yii – Пути к работе включают в себя другое представление в этом представлении

Моя страница макета:

<html> <body> <div id="container"> <ul id="list"></ul> </div> <input id="update" value="update" /> </body> </html> 

в котором список ul является частичным, который будет отображаться либо при

  1. загружается вся страница
  2. когда нажата кнопка обновления, выдается ajax reqeust и внутреннийHTML слоя контейнера будет обновлен с ответом ul list

Я новичок в Yii, и я не уверен, как повторно использовать ul partial как в обоих случаях, так и в googled, и виджеты, похоже, являются решением, а не уверенным. Есть идеи?

Благодарю.

Если я правильно понимаю ваш вопрос, вы можете сделать несколько вещей …

(Я предполагаю, что у вас есть файл с частичным представлением, например 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 (), правда) Я думаю). Затем, исходя из начальной нагрузки, я эхо от этой функции, и в действии ajax я повторяю ее перед вызовом Yii :: app () -> end () ;.

Виджеты полезны, когда вы будете обрабатывать частичный код по всему сайту, даже на страницах с разных контроллеров. Поэтому, если этот список находится на боковой панели по всему сайту, может быть лучше сделать виджет из него, иначе я бы просто использовал контроллер модели, с которой вы работаете. То, что вы сделали бы с виджетами, будет таким же, как и с обычным представлением – либо создайте данные в виджете, либо сделайте частичный просмотр, или вызовите его через AJAX. То, что вы, вероятно, сделаете для AJAX, – это POST для контроллера, с которого вы получаете данные, поэтому вам все равно потребуется действие AJAX. Виджет просто упростит сбросить его в разные места вокруг сайта.

Удачи!