¿Cómo crearía un módulo para recopilar datos básicos de formularios de correo electrónico e informar sobre ellos en el marco de Magento?

Comienza definiendo una ruta para su módulo. Esto se hace en /etc/frontend/routes.xml

<config xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: noNamespaceSchemaLocation = “urn: magento: framework: App / etc / routes.xsd”>

Luego, haga el controlador ‘Index’ para esta ruta en /Controller/Index.php

<? php

espacio de nombres Su \ Módulo \ Controlador;

use Magento \ Framework \ App \ Action \ Action;
use Magento \ Framework \ App \ Action \ Context;
use Magento \ Framework \ View \ Result \ PageFactory;

Índice de clase extiende Acción
{
protegido $ resultPageFactory;

función pública __construct (Context $ context, PageFactory $ pageFactory)
{
$ this-> resultPageFactory = $ pageFactory;
parent :: __ construct ($ context);
}

función pública execute ()
{
$ resultPage = $ this-> resultPageFactory-> create ();

return $ resultPage;
}
}

Cree el archivo de diseño para esta página en /view/frontend/layout/timestwo_index.xml

<page xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" layout = "1column"
xsi: noNamespaceSchemaLocation = “urn: magento: framework: View / Layout / etc / page_configuration.xsd”>

Formulario

Ahora haga la plantilla /view/frontend/templates/form.phtml

<input type = "text" id = "number"
nombre = “número”
class = “input-text”>

<button type = "submit" class = "action submit primary" title = "”>

Ahora haga el controlador para la página de resultados: /Controller/Result.php

<? php

espacio de nombres Su \ Módulo \ Controlador;

use Magento \ Framework \ App \ Action \ Action;
use Magento \ Framework \ App \ Action \ Context;
use Magento \ Framework \ View \ Element \ Messages;
use Magento \ Framework \ View \ Result \ PageFactory;

clase Resultado extiende Acción
{
/ ** @var PageFactory $ resultPageFactory * /
protegido $ resultPageFactory;

/ **
* Resultado constructor.
* @param Context $ context
* @param PageFactory $ pageFactory
* /
función pública __construct (Context $ context, PageFactory $ pageFactory)
{
$ this-> resultPageFactory = $ pageFactory;
parent :: __ construct ($ context);
}

/ **
* La acción del controlador
* *
* @return \ Magento \ Framework \ View \ Result \ Page
* /
función pública execute ()
{
$ número = $ this-> getRequest () -> getParam (‘número’);

$ resultPage = $ this-> resultPageFactory-> create ();

/ ** @var Messages $ messageBlock * /
$ messageBlock = $ resultPage-> getLayout () -> createBlock (
‘Magento \ Framework \ View \ Element \ Messages’,
‘responder’
);
if (is_numeric ($ number)) {
$ messageBlock-> addSuccess ($ número. ‘por 2 es’. ($ número * 2));
}más{
$ messageBlock-> addError (‘¡No ingresaste un número!’);
}

$ resultPage-> getLayout () -> setChild (
‘contenido’,
$ messageBlock-> getNameInLayout (),
‘answer_alias’
);

return $ resultPage;
}
}

Finalmente, /view/frontend/layout/timestwo_result.xml el diseño xml para la página de resultados en /view/frontend/layout/timestwo_result.xml

<page xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" layout = "1column"
xsi: noNamespaceSchemaLocation = “urn: magento: framework: View / Layout / etc / page_configuration.xsd”>

Resultado

Ejecute php bin/magento setup:upgrade para habilitar su módulo, si aún no lo ha hecho. Ahora borra el caché. Vaya a /timestwo en el navegador para ver el formulario.