Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Form.php
Go to the documentation of this file.
1 <?php
11 
12 class Form extends \Magento\Backend\Block\Widget\Form\Generic
13 {
19  protected $_reviewData = null;
20 
25 
31  protected $_productFactory;
32 
38  protected $_systemStore;
39 
50  public function __construct(
51  \Magento\Backend\Block\Template\Context $context,
52  \Magento\Framework\Registry $registry,
53  \Magento\Framework\Data\FormFactory $formFactory,
54  \Magento\Store\Model\System\Store $systemStore,
55  \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
56  \Magento\Catalog\Model\ProductFactory $productFactory,
57  \Magento\Review\Helper\Data $reviewData,
58  array $data = []
59  ) {
60  $this->_reviewData = $reviewData;
61  $this->customerRepository = $customerRepository;
62  $this->_productFactory = $productFactory;
63  $this->_systemStore = $systemStore;
64  parent::__construct($context, $registry, $formFactory, $data);
65  }
66 
73  protected function _prepareForm()
74  {
75  $review = $this->_coreRegistry->registry('review_data');
76  $product = $this->_productFactory->create()->load($review->getEntityPkValue());
77 
79  $form = $this->_formFactory->create(
80  [
81  'data' => [
82  'id' => 'edit_form',
83  'action' => $this->getUrl(
84  'review/*/save',
85  [
86  'id' => $this->getRequest()->getParam('id'),
87  'ret' => $this->_coreRegistry->registry('ret')
88  ]
89  ),
90  'method' => 'post',
91  ],
92  ]
93  );
94 
95  $fieldset = $form->addFieldset(
96  'review_details',
97  ['legend' => __('Review Details'), 'class' => 'fieldset-wide']
98  );
99 
100  $fieldset->addField(
101  'product_name',
102  'note',
103  [
104  'label' => __('Product'),
105  'text' => '<a href="' . $this->getUrl(
106  'catalog/product/edit',
107  ['id' => $product->getId()]
108  ) . '" onclick="this.target=\'blank\'">' . $this->escapeHtml(
109  $product->getName()
110  ) . '</a>'
111  ]
112  );
113 
114  try {
115  $customer = $this->customerRepository->getById($review->getCustomerId());
116  $customerText = __(
117  '<a href="%1" onclick="this.target=\'blank\'">%2 %3</a> <a href="mailto:%4">(%4)</a>',
118  $this->getUrl('customer/index/edit', ['id' => $customer->getId(), 'active_tab' => 'review']),
119  $this->escapeHtml($customer->getFirstname()),
120  $this->escapeHtml($customer->getLastname()),
121  $this->escapeHtml($customer->getEmail())
122  );
123  } catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
124  $customerText = ($review->getStoreId() == \Magento\Store\Model\Store::DEFAULT_STORE_ID)
125  ? __('Administrator') : __('Guest');
126  }
127 
128  $fieldset->addField('customer', 'note', ['label' => __('Author'), 'text' => $customerText]);
129 
130  $fieldset->addField(
131  'summary-rating',
132  'note',
133  [
134  'label' => __('Summary Rating'),
135  'text' => $this->getLayout()->createBlock(
136  \Magento\Review\Block\Adminhtml\Rating\Summary::class
137  )->toHtml()
138  ]
139  );
140 
141  $fieldset->addField(
142  'detailed-rating',
143  'note',
144  [
145  'label' => __('Detailed Rating'),
146  'required' => true,
147  'text' => '<div id="rating_detail">' . $this->getLayout()->createBlock(
148  \Magento\Review\Block\Adminhtml\Rating\Detailed::class
149  )->toHtml() . '</div>'
150  ]
151  );
152 
153  $fieldset->addField(
154  'status_id',
155  'select',
156  [
157  'label' => __('Status'),
158  'required' => true,
159  'name' => 'status_id',
160  'values' => $this->_reviewData->getReviewStatusesOptionArray()
161  ]
162  );
163 
167  if (!$this->_storeManager->hasSingleStore()) {
168  $field = $fieldset->addField(
169  'select_stores',
170  'multiselect',
171  [
172  'label' => __('Visibility'),
173  'required' => true,
174  'name' => 'stores[]',
175  'values' => $this->_systemStore->getStoreValuesForForm()
176  ]
177  );
178  $renderer = $this->getLayout()->createBlock(
179  \Magento\Backend\Block\Store\Switcher\Form\Renderer\Fieldset\Element::class
180  );
181  $field->setRenderer($renderer);
182  $review->setSelectStores($review->getStores());
183  } else {
184  $fieldset->addField(
185  'select_stores',
186  'hidden',
187  ['name' => 'stores[]', 'value' => $this->_storeManager->getStore(true)->getId()]
188  );
189  $review->setSelectStores($this->_storeManager->getStore(true)->getId());
190  }
191 
192  $fieldset->addField(
193  'nickname',
194  'text',
195  ['label' => __('Nickname'), 'required' => true, 'name' => 'nickname']
196  );
197 
198  $fieldset->addField(
199  'title',
200  'text',
201  ['label' => __('Summary of Review'), 'required' => true, 'name' => 'title']
202  );
203 
204  $fieldset->addField(
205  'detail',
206  'textarea',
207  ['label' => __('Review'), 'required' => true, 'name' => 'detail', 'style' => 'height:24em;']
208  );
209 
210  $form->setUseContainer(true);
211  $form->setValues($review->getData());
212  $this->setForm($form);
213  return parent::_prepareForm();
214  }
215 }
$customer
Definition: customers.php:11
setForm(\Magento\Framework\Data\Form $form)
Definition: Form.php:112
__()
Definition: __.php:13
__construct(\Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Data\FormFactory $formFactory, \Magento\Store\Model\System\Store $systemStore, \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, \Magento\Catalog\Model\ProductFactory $productFactory, \Magento\Review\Helper\Data $reviewData, array $data=[])
Definition: Form.php:50