Pergunta

I'm trying to add a Checkbox to account registration for terms and conditions mainly due to GDPR.

I've looked at this question: magento 2 - Terms and conditions checkbox on register page

But the answer is fairly vague. Where in the register.phtml document must they go? I've tried several locations and it causes the register form to disappear or miss elements.

The checkbox needs to be a requirement for registration but must not already be checked.

I hope someone can help me.

Foi útil?

Solução

Try following way:

Step 1: VendorName/ModuleName/view/frontend/layout/customer_account_create.xml


<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="form.additional.info">
            <block class="Magento\Framework\View\Element\Template" name="tc" template="VendorName_ModuleName::tc.phtml"/>
        </referenceContainer>
    </body>
</page>

Step 2: VendorName/ModuleName/view/frontend/templates/tc.phtml


<div class="field tcagreecreateaccount required">
    <div class="control">
        <input type="checkbox" id="tcagreecreateaccount" name="tcagreecreateaccount" data-validate="{required:true}" class="input-checkbox checkbox required" value="1">
        <label for="tcagreecreateaccount" class="label">
            <?= __('Custom T&C') ?>
        </label>
    </div>
</div>

Outras dicas

The accepted answer works, but only makes sense if you want to really create your own code.

If you want to use magento native agreements that are also used in checkout, do the following:

Vendor_theme lives here: app/design/frontend/

Vendor_theme/Magento_Customer/layout/customer_account_create.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="form.additional.info">
            <block class="Magento\CheckoutAgreements\Block\Agreements" name="register.agreements" as="agreements" template="Magento_CheckoutAgreements::additional_agreements.phtml"/>
        </referenceContainer>
    </body>
</page>

this way the checkout agreements get used for the customer register.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top