Magento 2 создает форму в интерфейсе и сохраняет данные в сущности

Я создал модуль в пути приложения / код / ​​Smartshore / подписка

Я хочу создать маршрут, который отображает форму и сохраняет в ней данные. У меня есть код, но я не знаю, чего не хватает: см. Код ниже:

Smartshore / Подписка / и т.д. / интерфейс / routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="subscription" frontName="subscription">
<module name="Smartshore_Subscription" />
</route>
</router>
</config>

Smartshore / Подписка / Controller / Index / index.php

<?php

namespace Smartshore\Subscription\Controller\Index;

use \Magento\Framework\App\Action\Action;

class Index extends Action
{
/** @var  \Magento\Framework\View\Result\Page */
protected $resultPageFactory;

/**
* @param \Magento\Framework\App\Action\Context $context
*/
public function __construct(\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory)
{
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}

/**
* Subscription Index, shows a list of subscriptions
*
* @return \Magento\Framework\View\Result\PageFactory
*/
public function execute()
{
return $this->resultPageFactory->create();
}
}

Smartshore / Подписка / Controller / Index / add.php

<?php

namespace Smartshore\Subscription\Controller;use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Add extends Action
{
protected $resultPageFactory;

public function __construct(Context $context, PageFactory $pageFactory)
{
$this->resultPageFactory = $pageFactory;
parent::__construct($context);
}

public function execute()
{
$resultPage = $this->resultPageFactory->create();

return $resultPage;
}
}

Smartshore / Подписка / Controller / Index / Result.php

<?php

namespace Smartshore\Subscription\Controller;use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Element\Messages;
use Magento\Framework\View\Result\PageFactory;

class Result extends Action
{
/** @var PageFactory $resultPageFactory */
protected $resultPageFactory;

/**
* Result constructor.
* @param Context $context
* @param PageFactory $pageFactory
*/
public function __construct(Context $context, PageFactory $pageFactory)
{
$this->resultPageFactory = $pageFactory;
parent::__construct($context);
}

/**
* The controller action
*
* @return \Magento\Framework\View\Result\Page
*/
public function execute()
{
$number = $this->getRequest()->getParam('number');

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

/** @var Messages $messageBlock */
$messageBlock = $resultPage->getLayout()->createBlock(
'Magento\Framework\View\Element\Messages',
'answer'
);
if (is_numeric($number)) {
$messageBlock->addSuccess($number . ' times 2 is ' . ($number * 2));
}else{
$messageBlock->addError('You didn\'t enter a number!');
}

$resultPage->getLayout()->setChild(
'content',
$messageBlock->getNameInLayout(),
'answer_alias'
);

return $resultPage;
}
}

Smartshore / Подписка / просмотр / интерфейс / макет / subscription_index_add.xml

<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<title>New Subscription</title>
</head>
<body>
<referenceBlock name="navigation.sections" remove="true" />
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="subscriptionform.add" template="Smartshore_Subscription::form.phtml"/>
</referenceContainer>
</body>
</page>

Smartshore / Подписка / просмотр / интерфейс / макет / subscription_index_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">
<head>
<title>Result</title>
</head>
</page>

правильно ли я сделал все вышеперечисленное?

У меня есть и другие файлы. Но я показал здесь файлы уважения к моей форме и ее представления.

Когда я вхожу / подписка / индекс / добавить

Я не нашел ни одного маршрута.

В чем проблема?

1

Решение

Проверьте пространства имен в файлах / классах Add и Result. Так должно быть namespace Smartshore\Subscription\Controller\Index

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]