web-dev-qa-db-fra.com

Rendu de vues à d'autres endroits dans Yii2 - pas de rendu Partiel?

J'ai besoin de rendre une vue partielle à l'intérieur d'un fichier de composant personnalisé dans Yii2 et selon les Yii docs vous pouvez accéder à l'instance de vue via quelque chose comme ceci:

\Yii::$app->view->renderFile('@app/views/site/license.php');

Je suis allé de l'avant et j'ai essayé:

Yii::$app->view->renderPartial('//my/view/');

... mais j'ai reçu une erreur indiquant que j'essayais d'accéder à une méthode inexistante.

J'ai ensuite vérifié la voir la classe et j'ai remarqué qu'il n'a pas de renderPartial et c'est une méthode de la classe contrôleur à la place.

Je vois qu'il a une méthode renderFile et une méthode render; lequel dois-je utiliser?

Les documents n'indiquent pas que la méthode render inclut la mise en page comme la méthode du même nom de la classe du contrôleur , donc je ' je ne suis pas sûr; quant à renderFile Je ne suis pas sûr à 100% si cela convient non plus?

Quelqu'un pourrait-il expliquer quelle méthode produirait les mêmes résultats que renderPartial produit?

12
Brett

Vous pouvez appeler renderPartial depuis Yii::$app->controller->renderPartial('myview'); Aussi comme vous pouvez le voir depuis code source de yii\base\ControllerrenderPartial appelle View's render méthode pour pouvoir utiliser Yii::$app->view->render. Fondamentalement, il n'y a pas de différence entre render et renderFile, car render appelle en interne renderFile. Mais lorsque vous utilisez render, vous pouvez passer $view dans plusieurs formats comme alias de chemin , chemin absolu dans l'application ou dans le module et chemin relatif . Et pour renderFile, vous ne pouvez transmettre que le chemin de fichier absolu ou l'alias de chemin.

27
Tony