Form.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Block\Adminhtml\Edit;
  7. use Magento\Customer\Controller\RegistryConstants;
  8. /**
  9. * Adminhtml customer edit form block
  10. */
  11. class Form extends \Magento\Backend\Block\Widget\Form\Generic
  12. {
  13. /**
  14. * Customer Repository.
  15. *
  16. * @var \Magento\Customer\Api\CustomerRepositoryInterface
  17. */
  18. protected $_customerRepository;
  19. /**
  20. * @var \Magento\Framework\Api\ExtensibleDataObjectConverter
  21. */
  22. protected $_extensibleDataObjectConverter;
  23. /**
  24. * Constructor
  25. *
  26. * @param \Magento\Backend\Block\Template\Context $context
  27. * @param \Magento\Framework\Registry $registry
  28. * @param \Magento\Framework\Data\FormFactory $formFactory
  29. * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  30. * @param \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter
  31. * @param array $data
  32. */
  33. public function __construct(
  34. \Magento\Backend\Block\Template\Context $context,
  35. \Magento\Framework\Registry $registry,
  36. \Magento\Framework\Data\FormFactory $formFactory,
  37. \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
  38. \Magento\Framework\Api\ExtensibleDataObjectConverter $extensibleDataObjectConverter,
  39. array $data = []
  40. ) {
  41. $this->_customerRepository = $customerRepository;
  42. $this->_extensibleDataObjectConverter = $extensibleDataObjectConverter;
  43. parent::__construct($context, $registry, $formFactory, $data);
  44. }
  45. /**
  46. * Prepare the form.
  47. *
  48. * @return $this
  49. */
  50. protected function _prepareForm()
  51. {
  52. /** @var \Magento\Framework\Data\Form $form */
  53. $form = $this->_formFactory->create(
  54. [
  55. 'data' => [
  56. 'id' => 'edit_form',
  57. 'action' => $this->getUrl('customer/*/save'),
  58. 'method' => 'post',
  59. 'enctype' => 'multipart/form-data',
  60. ],
  61. ]
  62. );
  63. $customerId = $this->_coreRegistry->registry(RegistryConstants::CURRENT_CUSTOMER_ID);
  64. if ($customerId) {
  65. $form->addField('id', 'hidden', ['name' => 'customer_id']);
  66. $customer = $this->_customerRepository->getById($customerId);
  67. $form->setValues(
  68. $this->_extensibleDataObjectConverter->toFlatArray(
  69. $customer,
  70. [],
  71. \Magento\Customer\Api\Data\CustomerInterface::class
  72. )
  73. )->addValues(
  74. ['customer_id' => $customerId]
  75. );
  76. }
  77. $form->setUseContainer(true);
  78. $this->setForm($form);
  79. return parent::_prepareForm();
  80. }
  81. }