Php 电子邮件模板变量在Magento中如何工作?

Php 电子邮件模板变量在Magento中如何工作?,php,email,templates,magento,Php,Email,Templates,Magento,我需要创建一个使用从cron运行的观察者发送的特定电子邮件模板。 当我收到电子邮件时,我没有提供的变量的值 $vars = array( 'product' => $product, 'customer' => $customer ); $mailTemplate->sendTransactional( $mailId, 'general', $customer->getData('email'), $customer-

我需要创建一个使用从cron运行的观察者发送的特定电子邮件模板。
当我收到电子邮件时,我没有提供的变量的值

$vars = array(
    'product'  => $product,
    'customer' => $customer
);

$mailTemplate->sendTransactional(
    $mailId,
    'general',
    $customer->getData('email'),
    $customer->getData('firstname') . ' ' . $customer->getData('lastname'),
    $vars
);
$product
$customer
都是模型集合(product\U集合和customer\U集合)中的对象

在我的模板中,我尝试如下方式访问它们:

Dear {{htmlescape var=$customer.name}},
<p>Check {{htmlescape var=$product.name}}</p>
亲爱的{{htmlescape var=$customer.name}, 检查{{htmlescape var=$product.name}

有什么想法吗


顺便问一下,我如何构造产品的url?(让客户点击链接查看产品)

在变量上不带美元符号的情况下尝试。查看默认电子邮件模板,它们似乎不包含那些美元符号

希望有帮助

谢谢,

试试看,不要在你的变量上画美元符号。查看默认电子邮件模板,它们似乎不包含那些美元符号

希望有帮助

谢谢,
Joe

这些参数被标记化,而
前面的部分被视为对象,后面的字符串是要在该对象上调用的
方法

因此,在模板处理过程中,
$customer.name
被计算为
$customer->name()
。要检索客户名称,您可以在PHP中调用
$customer->getName()
,因此在模板中使用
$customer.getName()

但是对于不同的模板方法,参数的传递方式有一个重要的区别。正如我从源代码中收集到的,所有将参数作为单个参数而没有属性赋值的模板方法都应该在没有前导
$
的情况下调用,而所有使用属性的方法都需要
$
作为前缀

属性分配

{{htmlescape var=$customer.getName()}}
但是作为一个单独的情人

{{var customer.getName()}}

通过查看
*指令()
函数,查找类
Mage\u Core\u Model\u Email\u Template\u Filter
中的所有可用方法。

这些参数被标记化,而
前面的部分被视为对象,后面的字符串是要在该对象上调用的
方法

因此,在模板处理过程中,
$customer.name
被计算为
$customer->name()
。要检索客户名称,您可以在PHP中调用
$customer->getName()
,因此在模板中使用
$customer.getName()

但是对于不同的模板方法,参数的传递方式有一个重要的区别。正如我从源代码中收集到的,所有将参数作为单个参数而没有属性赋值的模板方法都应该在没有前导
$
的情况下调用,而所有使用属性的方法都需要
$
作为前缀

属性分配

{{htmlescape var=$customer.getName()}}
但是作为一个单独的情人

{{var customer.getName()}}

查看
*指令()
函数,查找类
Mage\u Core\u Model\u Email\u Template\u Filter
中的所有可用方法。

如果应用实际筛选器时变量已就位,请拍手并开始调试。最好的使用方法是与php ide一起使用,您可以启动调试会话。如果在应用实际过滤器时变量已就位,则可以开始调试。最好的使用方法是将其与您的php ide一起使用,您可以启动调试会话