首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Magento中提交联系表单后重定向到特定页面

在Magento中,提交联系表单后重定向到特定页面可以通过以下方法实现:

  1. 创建一个自定义模块:

首先,需要创建一个自定义模块,以便在其中添加自定义代码。在Magento项目的app/code目录下创建一个新的文件夹,例如MyCompany/ContactFormRedirect,并在其中创建etc文件夹。在etc文件夹中创建module.xml文件,其中包含以下内容:

代码语言:xml
复制
<?xml version="1.0"?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
   <module name="MyCompany_ContactFormRedirect" setup_version="1.0.0">
       <sequence>
           <module name="Magento_Contact"/>
        </sequence>
    </module>
</config>
  1. 创建一个自定义控制器:

在自定义模块中创建一个控制器,用于处理联系表单提交并重定向到特定页面。在app/code/MyCompany/ContactFormRedirect/Controller目录下创建ContactForm.php文件,其中包含以下内容:

代码语言:php
复制
<?php
namespace MyCompany\ContactFormRedirect\Controller;

use Magento\Framework\App\Action\Context;
use Magento\Framework\App\Action\Action;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\RequestInterface;
use Magento\Contact\Model\ContactFactory;
use Magento\Contact\Model\ConfigInterface;
use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\Translate\Inline\StateInterface;
use Magento\Framework\App\Action\HttpPostActionInterface;

class ContactForm extends Action implements HttpPostActionInterface
{
    protected $_contactFactory;
    protected $_config;
    protected $_transportBuilder;
    protected $_inlineTranslation;
    protected $_pageFactory;

    public function __construct(
        Context $context,
        ContactFactory $contactFactory,
        ConfigInterface $config,
        TransportBuilder $transportBuilder,
        StateInterface $inlineTranslation,
        PageFactory $pageFactory
    ) {
        $this->_contactFactory = $contactFactory;
        $this->_config = $config;
        $this->_transportBuilder = $transportBuilder;
        $this->_inlineTranslation = $inlineTranslation;
        $this->_pageFactory = $pageFactory;
        parent::__construct($context);
    }

    public function execute()
    {
        $post = $this->getRequest()->getPostValue();
        if ($post) {
            $this->_inlineTranslation->suspend();
            $contact = $this->_contactFactory->create();
            $contact->setData($post);
            $errors = $contact->validateData();
            $this->_inlineTranslation->resume();
            if (!count($errors)) {
                $contact->send();
                $this->messageManager->addSuccessMessage(__('Your inquiry was submitted and will be responded to as soon as possible. Thank you for contacting us.'));
                return $this->_redirect('contact/index', ['_fragment' => 'form']);
            } else {
                foreach ($errors as $error) {
                    $this->messageManager->addErrorMessage($error);
                }
            }
        }
        $resultPage = $this->_pageFactory->create();
        return $resultPage;
    }
}
  1. 配置路由:

在自定义模块中创建一个路由配置文件,以便将联系表单提交请求路由到自定义控制器。在app/code/MyCompany/ContactFormRedirect/etc目录下创建frontend文件夹,并在其中创建routes.xml文件,其中包含以下内容:

代码语言: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="contactformredirect" frontName="contactformredirect">
           <module name="MyCompany_ContactFormRedirect" />
        </route>
    </router>
</config>
  1. 更新联系表单:

最后,需要更新联系表单的action属性,以便将表单提交请求路由到自定义控制器。在app/design/frontend/<Vendor>/<Theme>/Magento_Contact/templates/form.phtml文件中找到表单元素,并将其action属性更改为:

代码语言:html
复制
<form action="<?php echo $block->getUrl('contactformredirect/contactform/index') ?>" id="contactForm" method="post">

现在,当用户提交联系表单时,他们将被重定向到特定页面,而不是默认的联系页面。可以通过在ContactForm控制器中自定义_redirect方法来更改重定向页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券