modelos framework formularios escenarios ejemplos php html yii

php - framework - yii2 ejemplos



Yii: las formas de hacerlo incluyen otra vista en esta vista (1)

Mi página de diseño:

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

en el que la lista ul es un parcial que se representará cuando

  1. toda la página se carga
  2. cuando se hace clic en el botón de actualización, se emite un ajax reqeust y el innerHTML de la capa del contenedor se actualizará con la lista de respuestas ul

Soy nuevo en Yii y no estoy seguro de cómo reutilizar el ul partial tanto en ambos casos, busqué en Google un poco y widgets parece ser la solución, no estoy seguro de eso. ¿Algunas ideas?

Gracias.


Si entiendo bien tu pregunta, puedes hacer algunas cosas ...

(Supongo que tiene un archivo de vista parcial como views / model / _list.php).

Puede mostrar Partial (''/ model / _list'') en la carga de la página inicial, y luego en su acción AJAX simplemente llame a renderPartial (''/ model / _list'') de nuevo.

O simplemente puede tener la acción AJAX (que contiene renderPartial (''/ model / _list'')) y llamarla en la carga de la página con jQuery en lugar de mostrarla en la vista (simplemente llame a Yii :: app () -> getClientScript () -> registerScript en su vista donde desea cargarlo, y use $ .ajax () o algo para hacer la llamada).

Una tercera cosa que he hecho es hacer una función en el controlador (no una acción , solo un método público regular) que devuelve la salida de renderPartial (return $ this-> renderPartial (''/ model / _list'', array (), cierto) creo). Luego, a la vista de la carga inicial, hago eco de esa función, y en la acción ajax hago eco antes de llamar a Yii :: app () -> end () ;.

Los widgets son útiles cuando va a mostrar un poco de código parcial en todo el sitio, incluso en páginas de diferentes controladores. Entonces, si esa lista está en una barra lateral en todo el sitio, sería mejor crear un widget, de lo contrario solo usaría el controlador del modelo con el que está trabajando. Lo que harías con el widget es el mismo que usarías con la vista normal: construyes los datos en el widget y renderizas el partialView, o lo llamas a través de AJAX. Lo que probablemente haría por AJAX es POST para el controlador del que está obteniendo los datos, por lo que aún necesitará la acción AJAX. El widget simplemente hará que sea más fácil colocarlo en diferentes lugares del sitio.

¡Buena suerte!