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?
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.