Un bloc et un modèle sont deux choses différentes. Ce n'est pas un doublon.
pspahn
Les modèles et blocs de Rajeev K Tom sont totalement différents
theSeeker
Réponses:
20
VIEILLI: LA RÉPONSE SE RÉFÈRE À MAGENTO 2 ALPHA
Je souhaite que ce soit aussi simple que cela.
Cela dépend d'où vous voulez l'instancier.
Si vous souhaitez créer une instance à l'intérieur d'un autre bloc, faites-le comme ceci:
mais ici, il y a un hic.
vous devez créer un membre protégé sur le modèle appelé _blockFactoryet injecter une instance de \Magento\Framework\View\Element\BlockFactorydans le constructeur et l'affecter à ce membre var.
@Marius $ toplink = $ this-> getLayout () -> getBlock ('top.links') -> toHtml (); utiliser dans magento 1 pour magento 2 $ this -> _ view-> getLayout () -> getBlock (Full \ Block \ Class \ Name \ Here ') -> toHtml (); cela donne une erreur comme cette erreur fatale: Appel à une fonction membre toHtml () sur un non-objet, comment puis-je obtenir toHtml ()?
ND17
si vous êtes dans un contrôleur, vous n'avez rien à injecter _view. Il devrait être disponible par défaut, même si je pense qu'il est désormais obsolète. J'ai écrit cette réponse il y a 1,5 ans
Marius
1
@SachinS. Vous ne devriez plus utiliser cela. _viewest désormais obsolète dans les contrôleurs et il disparaîtra bientôt,
Marius
1
Puis-je appeler en utilisant un objet pagefactory comme celui-ci? $ viewPanelPageFactory = $ this-> resultPageFactory-> create (); $ viewPanel = $ viewPanelPageFactory-> getLayout () -> getBlock ('catalog.leftnav') -> toHtml ();
Sushivam
13
Pour instancier un bloc, vous devez utiliser la
\Magento\Framework\View\LayoutInterfaceclasse et sa createBlock()méthode.
Avec une classe d'assistance, vous pouvez le faire avec ce code:
Réponses:
VIEILLI: LA RÉPONSE SE RÉFÈRE À MAGENTO 2 ALPHA
Je souhaite que ce soit aussi simple que cela.
Cela dépend d'où vous voulez l'instancier.
Si vous souhaitez créer une instance à l'intérieur d'un autre bloc, faites-le comme ceci:
De l'intérieur d'un contrôleur, procédez comme suit:
De l'intérieur d'un modèle:
mais ici, il y a un hic.
vous devez créer un membre protégé sur le modèle appelé
_blockFactory
et injecter une instance de\Magento\Framework\View\Element\BlockFactory
dans le constructeur et l'affecter à ce membre var.Quelque chose comme ça:
Pour instancier un bloc depuis l'intérieur d'un assistant, cela fonctionne de la même manière que pour le modèle
la source
_view
. Il devrait être disponible par défaut, même si je pense qu'il est désormais obsolète. J'ai écrit cette réponse il y a 1,5 ans_view
est désormais obsolète dans les contrôleurs et il disparaîtra bientôt,Pour instancier un bloc, vous devez utiliser la
\Magento\Framework\View\LayoutInterface
classe et sacreateBlock()
méthode.Avec une classe d'assistance, vous pouvez le faire avec ce code:
Appelez ensuite
$helper->getBlock()
d'où vous avez besoin.la source