在Magento 2 模板phtml添加Form Key


开发自定义模块发现,Magento 2 表单提交的时候会自动重定向到主页。
如: 后台表单会重定向到面板页面
Magento 2 中From key是阻止伪造的跨站请求。
如何获取和设置Form key呢,接下来就具体讲解下:

在phtml中

  1. <input type="hidden" name="form_key" value="<?php echo $block->getFormKey() ?>" />

Template里的变量值是通过Block传过来的

  1. <?php
  2. namespace Company\Module\Block\Adminhtml\BlockFolder;
  3. class BlockPage extends \Magento\Framework\View\Element\Template
  4. {
  5. /**
  6. * @param \Magento\Backend\Block\Widget\Context $context
  7. * @param \Magento\Framework\Data\Form\FormKey $formKey
  8. * @param array $data
  9. */
  10. public function __construct(
  11. \Magento\Backend\Block\Widget\Context $context,
  12. \Magento\Framework\Data\Form\FormKey $formKey,
  13. array $data = []
  14. ) {
  15. parent::__construct($context, $data);
  16. $this->formKey = $formKey;
  17. }
  18. /**
  19. * get form key
  20. *
  21. * @return string
  22. */
  23. public function getFormKey()
  24. {
  25. return $this->formKey->getFormKey();
  26. }
  27. }

或者在phtml中直接获取

  1. <?php echo $block->getBlockHtml('formkey')?>

上面的语句将会输出类似于下面的html语句

  1. <input type="hidden" value="7yRSvrrxnQa5B62o">

综上,Form key拿到了,你就可以顺利的提交表单了。