cancel
Showing results for 
Search instead for 
Did you mean: 

phtml in Mail template - somehow not working

SOLVED

phtml in Mail template - somehow not working

Hello Everybody

 

I'm sending a mail to the customer. Therefore I created a mail template which should contain a list. To create the list I now try to include a phtml which is not working. The mail is always sent whithout the phtml content. (also if i just write echo "test123" in it). I read a lot of blogs and so on but  I think I'm somehow overlooking the mistake.

 

what did:

/public_html/app/code/vendor/module/view/frontend/email/voucher_email_template.html
{{template config_path="design/email/header_template"}}
<table>
    <tr class="email-intro">
        <td>
            <p class="greeting">{{var customer_name}},</p>
            <p>
                {{trans "Thank you for your order from %store_name." store_name=$store.getFrontendName()}}
                {{trans 'You can check the status of your order by <a href="%account_url">logging into your account</a>.' account_url=$this.getUrl($store,'customer/account/',[_nosid:1]) |raw}}
            </p>
            <p>
                {{trans 'If you have questions about your order, you can email us at <a href="mailxxto:%store_email">%store_email</a>.' store_email=$store_email |raw}}
            </p>
        </td>
    </tr>
    <tr class="email-summary">
        <td>
            <h1>{{trans 'Your voucher code(s) are the following:</h1>
        </td>
    </tr>
    <tr class="email-items">
        <td>
            {{layout handle="email_voucher_list" items=$vouchers area="frontend"}}
        </td>
    </tr>
</table>
{{template config_path="design/email/footer_template"}}

the phtml which is not included:

/public_html/app/code/vendor/module/view/frontend/templates/email/voucher.phtml
<?php $vouchers = $block->getItems() ?>
<table class="email-items">
    <thead>
        <tr>
            <th class="item-VoucherValue">
                <?= /* @escapeNotVerified */  __('VoucherValue'); ?>
            </th>
            <th class="item-Code">
                <?= /* @escapeNotVerified */  __('Code'); ?>
            </th>
        </tr>
    </thead>
    <tbody>
    <?php foreach ($_items as $_item): ?>
        <tr>
            <td>$item['VoucherValue']</td>
            <td>$item['Code']</td>
        </tr>
    <?php endforeach; ?>
    </tbody>
</table>

and the XML:

/public_html/app/code/vendor/module/view/frontend/layout/email_voucher_list.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Voucher List" design_abstraction="custom">
    <body>
        <block class="Magento\Framework\View\Element\Template" name="email_voucher_list" template="vendor_module::email/voucher.phtml"/>
    </body>
</page>

I'm thankful for every help.

 

Regards

Patrick

1 ACCEPTED SOLUTION

Accepted Solutions

Re: phtml in Mail template - somehow not working

I found it... 

voucher_email_template.html

 

<h1>{{trans 'Your voucher code(s) are the following:}}</h1>

The closing brackets of this line were missing....

 

However, what's the difference between:

{{layout handle="email_voucher_list" ....

and 

{{block class='Magento\\Framework\\View\\Element\\Template' template='VendorName_ModuleName::email...

 

?

 

 

View solution in original post

1 REPLY 1

Re: phtml in Mail template - somehow not working

I found it... 

voucher_email_template.html

 

<h1>{{trans 'Your voucher code(s) are the following:}}</h1>

The closing brackets of this line were missing....

 

However, what's the difference between:

{{layout handle="email_voucher_list" ....

and 

{{block class='Magento\\Framework\\View\\Element\\Template' template='VendorName_ModuleName::email...

 

?