Magento 2 – Add Terms and Conditions Checkbox on Register Page

magento-2.1registerterms and conditions

I want to set terms and conditions checkbox on register page which retrieve same as checkout.

On click of terms and conditions link open content in popup.

Any suggestion would be appreciated.

Thanks.

Best Answer

Change in following files: /vendor/magento/module-customer/view/frontend/templates/form/register.phtml (Append below code)

<?php   
     if (!$block->getAgreements()) {
            return;
        }

        /** @var \Magento\CheckoutAgreements\Model\ResourceModel\Agreement\Collection $argeementsCollection */
        $argeementsCollection = $block->getAgreements();
        $agreementMappedArray = [];
        /** @var \Magento\CheckoutAgreements\Model\Agreement $agreement */
        foreach ($argeementsCollection as $agreement) {
            if ($agreement->getIsActive()) {
                $agreementMappedArray[] = [
                    'mode' => $agreement->getMode(),
                    'agreementId' => $agreement->getAgreementId(),
                    'checkboxText' => $agreement->getCheckboxText(),
                    'content' => $agreement->getContent()
                ];
            }
        }
        $agreementJson = json_encode($agreementMappedArray);
        ?>
        <div data-bind="scope: 'checkout-agreements-component-scope'" class="checkout-agreements-block">
        <!-- ko template: getTemplate() --><!-- /ko -->
        </div>

Add below script :

 <script type="text/x-magento-init">
 {
    "*": {
        "Magento_Ui/js/core/app": {
            "components": {
                "checkout-agreements-component-scope": {
                    "component": "Magento_CheckoutAgreements/js/view/checkout-agreements",
                    "agreements": <?php /* @noEscape */ echo $agreementJson; ?>,
                    "isVisible": true
                }
            }
        }
    }
}
</script>

Note : Override form/phtml file into your module, Don't change in core module directly.