Skip to content

Commit

Permalink
Creacion de Modulo Mageplaza 4
Browse files Browse the repository at this point in the history
Paso 5: Objeto de fábrica
Hemos terminado con la creación de la tabla de la base de datos, el modelo CRUD, el modelo de recursos y la colección. Entonces, ¿cómo usarlos?

En esta parte, hablaremos sobre Factory Object para el modelo. Como sabe, en OOP, se utilizará un método de fábrica para instanciar un objeto. En Magento, Factory Object hace lo mismo.

El nombre de la clase Factory es el nombre de la clase Model y se adjunta con la palabra 'Factory'. Entonces, para nuestro ejemplo, tendremos la clase PostFactory. No debe crear esta clase. Magento lo creará por ti. Siempre que el administrador de objetos de Magento encuentre un nombre de clase que termine con la palabra 'Factory', generará automáticamente la clase Factory en la var/generationcarpeta si la clase aún no existe. Verá la clase de fábrica en

var/generation/<vendor_name>/<module_name>/Model/ClassFactory.php
En este caso, será:

var/generation/Mageplaza/HelloWorld/Model/PostFactory.php
Para crear una instancia de un objeto modelo, usaremos la inyección automática de dependencia del constructor para inyectar un objeto de fábrica, luego usaremos el objeto de fábrica para crear una instancia del objeto modelo.

Por ejemplo, llamaremos al modelo para obtener datos en el controlador .

Como ve en este controlador, el objeto PostFactory se creará en la _construct()función. En la execute()función, usamos  = ->_postFactory->create();para crear el objeto modelo.

Una vez completado, abramos el navegador y vayamos a

http://magento240.local/hellomageplaza/index/index
  • Loading branch information
PerezContrerasLuis committed Jan 26, 2022
1 parent f7663d9 commit 7581e7b
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion code/Mageplaza/HelloWorld/Controller/Index/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,29 @@ class Index extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;

protected $_postFactory;

public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
\Magento\Framework\View\Result\PageFactory $pageFactory,
\Mageplaza\HelloWorld\Model\PostFactory $postFactory
)
{
$this->_pageFactory = $pageFactory;
$this->_postFactory = $postFactory;
return parent::__construct($context);
}

public function execute()
{
$post = $this->_postFactory->create();
$collection = $post->getCollection();
foreach($collection as $item){
echo "<pre>";
print_r($item->getData());
echo "</pre>";
}
exit();
return $this->_pageFactory->create();
}
}

0 comments on commit 7581e7b

Please sign in to comment.