form.phtml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. // @codingStandardsIgnoreFile
  7. /** @var \Magento\Review\Block\Form $block */
  8. ?>
  9. <div class="block review-add">
  10. <div class="block-title"><strong><?= $block->escapeHtml(__('Write Your Own Review')) ?></strong></div>
  11. <div class="block-content">
  12. <?php if ($block->getAllowWriteReviewFlag()): ?>
  13. <form action="<?= $block->escapeUrl($block->getAction()) ?>" class="review-form" method="post" id="review-form" data-role="product-review-form" data-bind="scope: 'review-form'">
  14. <?= $block->getBlockHtml('formkey') ?>
  15. <?= $block->getChildHtml('form_fields_before') ?>
  16. <fieldset class="fieldset review-fieldset" data-hasrequired="<?= $block->escapeHtmlAttr(__('* Required Fields')) ?>">
  17. <legend class="legend review-legend"><span><?= $block->escapeHtml(__("You're reviewing:")) ?></span><strong><?= $block->escapeHtml($block->getProductInfo()->getName()) ?></strong></legend><br />
  18. <?php if ($block->getRatings() && $block->getRatings()->getSize()): ?>
  19. <span id="input-message-box"></span>
  20. <fieldset class="field required review-field-ratings">
  21. <legend class="label"><span><?= $block->escapeHtml(__('Your Rating')) ?></span></legend><br/>
  22. <div class="control">
  23. <div class="nested" id="product-review-table">
  24. <?php foreach ($block->getRatings() as $_rating): ?>
  25. <div class="field choice review-field-rating">
  26. <label class="label" id="<?= $block->escapeHtml($_rating->getRatingCode()) ?>_rating_label"><span><?= $block->escapeHtml($_rating->getRatingCode()) ?></span></label>
  27. <div class="control review-control-vote">
  28. <?php $options = $_rating->getOptions();?>
  29. <?php $iterator = 1; foreach ($options as $_option): ?>
  30. <input
  31. type="radio"
  32. name="ratings[<?= $block->escapeHtmlAttr($_rating->getId()) ?>]"
  33. id="<?= $block->escapeHtmlAttr($_rating->getRatingCode()) ?>_<?= $block->escapeHtmlAttr($_option->getValue()) ?>"
  34. value="<?= $block->escapeHtmlAttr($_option->getId()) ?>"
  35. class="radio"
  36. data-validate="{'rating-required':true}"
  37. aria-labelledby="<?= $block->escapeHtmlAttr($_rating->getRatingCode()) ?>_rating_label <?= $block->escapeHtmlAttr($_rating->getRatingCode()) ?>_<?= $block->escapeHtmlAttr($_option->getValue()) ?>_label" />
  38. <label
  39. class="rating-<?= $block->escapeHtmlAttr($iterator) ?>"
  40. for="<?= $block->escapeHtmlAttr($_rating->getRatingCode()) ?>_<?= $block->escapeHtmlAttr($_option->getValue()) ?>"
  41. title="<?= $block->escapeHtmlAttr(__('%1 %2', $iterator, $iterator > 1 ? __('stars') : __('star'))) ?>"
  42. id="<?= $block->escapeHtmlAttr($_rating->getRatingCode()) ?>_<?= $block->escapeHtmlAttr($_option->getValue()) ?>_label">
  43. <span><?= $block->escapeHtml(__('%1 %2', $iterator, $iterator > 1 ? __('stars') : __('star'))) ?></span>
  44. </label>
  45. <?php $iterator++; ?>
  46. <?php endforeach; ?>
  47. </div>
  48. </div>
  49. <?php endforeach; ?>
  50. </div>
  51. <input type="hidden" name="validate_rating" class="validate-rating" value="" />
  52. </div>
  53. </fieldset>
  54. <?php endif ?>
  55. <div class="field review-field-nickname required">
  56. <label for="nickname_field" class="label"><span><?= $block->escapeHtml(__('Nickname')) ?></span></label>
  57. <div class="control">
  58. <input type="text" name="nickname" id="nickname_field" class="input-text" data-validate="{required:true}" data-bind="value: nickname()" />
  59. </div>
  60. </div>
  61. <div class="field review-field-summary required">
  62. <label for="summary_field" class="label"><span><?= $block->escapeHtml(__('Summary')) ?></span></label>
  63. <div class="control">
  64. <input type="text" name="title" id="summary_field" class="input-text" data-validate="{required:true}" data-bind="value: review().title" />
  65. </div>
  66. </div>
  67. <div class="field review-field-text required">
  68. <label for="review_field" class="label"><span><?= $block->escapeHtml(__('Review')) ?></span></label>
  69. <div class="control">
  70. <textarea name="detail" id="review_field" cols="5" rows="3" data-validate="{required:true}" data-bind="value: review().detail"></textarea>
  71. </div>
  72. </div>
  73. </fieldset>
  74. <div class="actions-toolbar review-form-actions">
  75. <div class="primary actions-primary">
  76. <button type="submit" class="action submit primary"><span><?= $block->escapeHtml(__('Submit Review')) ?></span></button>
  77. </div>
  78. </div>
  79. </form>
  80. <script type="text/x-magento-init">
  81. {
  82. "[data-role=product-review-form]": {
  83. "Magento_Ui/js/core/app": <?= /* @noEscape */ $block->getJsLayout() ?>
  84. },
  85. "#review-form": {
  86. "Magento_Review/js/error-placement": {},
  87. "Magento_Review/js/validate-review": {}
  88. }
  89. }
  90. </script>
  91. <?php else: ?>
  92. <div class="message info notlogged" id="review-form">
  93. <div>
  94. <?= $block->escapeHtml(__('Only registered users can write reviews. Please <a href="%1">Sign in</a> or <a href="%2">create an account</a>', $block->getLoginLink(), $block->getRegisterUrl()), ['a']) ?>
  95. </div>
  96. </div>
  97. <?php endif ?>
  98. </div>
  99. </div>