1

I added below info but contact form not showing

app/design/frontend/company/name_theme/Magento_Contact/templates/form.phtml

Then, insert the contact form to the CMS page

{{block type=’core/template’ name=’contact-form’ template=’contacts/form.phtml’}}

Form.phtml code:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

// phpcs:disable Magento2.Templates.ThisInTemplate
// phpcs:disable Generic.Files.LineLength.TooLong

/** @var \Magento\Contact\Block\ContactForm $block */
/** @var \Magento\Contact\ViewModel\UserDataProvider $viewModel */

$viewModel = $block->getViewModel();
?>
<form class="form contact"
      action="<?= $block->escapeUrl($block->getFormAction()) ?>"
      id="contact-form"
      method="post"
      data-hasrequired="<?= $block->escapeHtmlAttr(__('* Required Fields')) ?>"
      data-mage-init='{"validation":{}}'>
    <fieldset class="fieldset">
        <legend class="legend"><span><?= $block->escapeHtml(__('Write Us')) ?></span></legend><br />
        <div class="field note no-label">
            <?= $block->escapeHtml(__('Jot us a note and we’ll get back to you as quickly as possible.')) ?>
        </div>
        <div class="field name required">
            <label class="label" for="name"><span><?= $block->escapeHtml(__('Name')) ?></span></label>
            <div class="control">
                <input name="name"
                       id="name"
                       title="<?= $block->escapeHtmlAttr(__('Name')) ?>"
                       value="<?= $block->escapeHtmlAttr($viewModel->getUserName()) ?>"
                       class="input-text"
                       type="text"
                       data-validate="{required:true}"/>
            </div>
        </div>
        <div class="field email required">
            <label class="label" for="email"><span><?= $block->escapeHtml(__('Email')) ?></span></label>
            <div class="control">
                <input name="email"
                       id="email"
                       title="<?= $block->escapeHtmlAttr(__('Email')) ?>"
                       value="<?= $block->escapeHtmlAttr($viewModel->getUserEmail()) ?>"
                       class="input-text"
                       type="email"
                       data-validate="{required:true, 'validate-email':true}"/>
            </div>
        </div>
        <div class="field telephone">
            <label class="label" for="telephone"><span><?= $block->escapeHtml(__('Phone Number')) ?></span></label>
            <div class="control">
                <input name="telephone"
                       id="telephone"
                       title="<?= $block->escapeHtmlAttr(__('Phone Number')) ?>"
                       value="<?= $block->escapeHtmlAttr($viewModel->getUserTelephone()) ?>"
                       class="input-text"
                       type="tel" />
            </div>
        </div>
        <div class="field comment required">
            <label class="label" for="comment">
                <span><?= $block->escapeHtml(__('What’s on your mind?')) ?></span>
            </label>
            <div class="control">
                <textarea name="comment"
                          id="comment"
                          title="<?= $block->escapeHtmlAttr(__('What’s on your mind?')) ?>"
                          class="input-text"
                          cols="5"
                          rows="3"
                          data-validate="{required:true}"
                ><?= $block->escapeHtml($viewModel->getUserComment()) ?></textarea>
            </div>
        </div>
        <?= $block->getChildHtml('form.additional.info') ?>
    </fieldset>
    <div class="actions-toolbar">
        <div class="primary">
            <input type="hidden" name="hideit" id="hideit" value="" />
            <button type="submit" title="<?= $block->escapeHtmlAttr(__('Submit')) ?>" class="action submit primary">
                <span><?= $block->escapeHtml(__('Submit')) ?></span>
            </button>
        </div>
    </div>
</form>
<script type="text/x-magento-init">
    {
        "*": {
            "Magento_Customer/js/block-submit-on-send": {
                "formId": "contact-form"
            }
        }
    }
</script>

1 Answer 1

0

According to https://experienceleague.adobe.com/docs/commerce-admin/start/setup/store-details.html#contact-us-form:

Contact form in CMS page

This is because, from Magento version 2.4.x, the form is using view_model to render logged in user details in the form.

Currently Magento has no way to use view models in CMS pages and CMS blocks.

You can use the default contact page {Store_URL}/contact and add customisation under the static blocks or phtml file.

2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.