Yii - способы сделать еще один вид в этом представлении - PullRequest
3 голосов
/ 12 октября 2010

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

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

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

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

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

Спасибо.

1 Ответ

5 голосов
/ 12 октября 2010

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

(я предполагаю, что у вас есть частичный файл вида, например 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. Виджет просто упростит размещение в разных местах сайта.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...