Hello,
Captcha is visible to my default contact us page, https://domain.com/contact/.
But whenever i tried to call it on another cms page, captcha is not visible.
{{block class="Magento\Contact\Block\ContactForm" name="contactForm" template="Magento_Contact::form.phtml"}}
I am using above given code to call contact us form in another page. Please help me if i am doing anything wrong. I just want to enable captcha in my cms page where I call contact us form.
Thanks,
Himanshi Gupta
I'm afraid it's not quite as simple as that. Captcha is a separate module with its own block https://github.com/magento/magento2/blob/2.2-develop/app/code/Magento/Captcha/Block/Captcha.php
The captcha module then specifically observes that pages that it wishes to protect and adds a check in for the correct captcha on that form:
https://github.com/magento/magento2/tree/2.2-develop/app/code/Magento/Captcha/Observer
The event observer for the regular contact form is set up here: https://github.com/magento/magento2/blob/9c14af7a97bcf338662de365d2613c7ca9dbf8c6/app/code/Magento/C...
There is a solution for inserting also the specific reCaptcha as a block.
Here the example for the reCaptcha on the register-page:
echo $this->getLayout()
->createBlock('MSP\ReCaptcha\Block\Frontend\ReCaptcha',
'msp-recaptcha',
['data' =>
[
'jsLayout' =>
[
'components' =>
[
'msp-recaptcha' =>
[
'component' => 'MSP_ReCaptcha/js/reCaptcha',
'reCaptchaId' => 'msp-recaptcha',
'zone' => 'create'
]
]
]
]
]
)
->setTemplate('MSP_ReCaptcha::msp_recaptcha.phtml')
->toHtml();