Question

Ma page de mise en page:

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

dans lequel la liste est un ul partielle qui sera rendue soit quand

  1. la page entière se charge
  2. lorsque le bouton de mise à jour se cliqué, un reqeust ajax est émis et le innerHTML de la couche de conteneur sera mis à jour avec la liste ul de réponse

Je suis nouveau et je suis Yii ne sais pas comment réutiliser les dans les deux cas à la fois partielle ul, je googlé un peu et widgets semble être la solution, pas sûr tho. Des idées?

Merci.

Était-ce utile?

La solution

Si je comprends bien votre question, vous pouvez faire quelques petites choses ...

(je suppose que vous avez un fichier de vue partielle comme des vues / modèle / _list.php.)

Vous pouvez renderPartial ( '/ modèle / _list') sur la charge de la page initiale, puis dans votre action AJAX il suffit d'appeler renderPartial ( '/ modèle / _list') à nouveau.

Ou vous pouvez simplement avoir l'action AJAX (contenant renderPartial ( '/ modèle / _list')), et l'appeler sur chargement de la page avec jQuery au lieu de le rendre dans la vue (il suffit d'appeler Yii :: app () -> getClientScript () -.> registerScript selon vous où vous voulez charger et utiliser .ajax $ () ou quelque chose à faire l'appel)

Une troisième chose que je l'ai fait est de faire une fonction dans le contrôleur (pas Action , juste une méthode publique régulière) qui retourne la sortie de renderPartial (return $ this-> renderPartial ( » / modèle / _list », array (), true) je pense). Ensuite, en vue de la charge initiale je fais écho à cette fonction, et dans l'action ajax je l'écho avant d'appeler :: Yii app () -> fin ();.

Widgets sont utiles lorsque vous rendrez un peu de code partiel sur tout le site, même sur les pages de différents contrôleurs. Donc, si cette liste est dans une barre latérale sur tout le site, il pourrait être préférable de faire un widget sur, sinon je voudrais simplement utiliser le contrôleur du modèle que vous travaillez. Qu'est-ce que vous le feriez avec le widget est le même que vous le feriez avec la vue régulière - soit construire les données dans le widget et de rendre le PartialView, ou appelez via AJAX. Qu'est-ce que vous auriez probablement faire pour l'AJAX est POST au contrôleur que vous obtenez les données à partir, de sorte que vous aurez toujours besoin l'action AJAX. Le widget sera juste plus facile de laisser tomber différents endroits autour du site.

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top