Php 在API中替换CiviCRM令牌的问题
我目前正在开发一个CiviCRM扩展,我需要在html代码中替换CiviCRM令牌(用于pdf和邮件生成) 我在核心文件中做了一点研究,并尝试在Php 在API中替换CiviCRM令牌的问题,php,drupal-7,token,civicrm,civicrm-extension,Php,Drupal 7,Token,Civicrm,Civicrm Extension,我目前正在开发一个CiviCRM扩展,我需要在html代码中替换CiviCRM令牌(用于pdf和邮件生成) 我在核心文件中做了一点研究,并尝试在PDFLetterCommon.php(/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php)中重新创建该行为,它将替换后处理函数中的令牌 这是原始的CiviCRM代码: list($formValues, $categories, $html_message, $messageToken, $return
PDFLetterCommon.php
(/civicrm/CRM/Contact/Form/Task/PDFLetterCommon.php
)中重新创建该行为,它将替换后处理函数中的令牌
这是原始的CiviCRM代码:
list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($form);
$skipOnHold = isset($form->skipOnHold) ? $form->skipOnHold : FALSE;
$skipDeceased = isset($form->skipDeceased) ? $form->skipDeceased : TRUE;
foreach ($form->_contactIds as $item => $contactId) {
$params = array('contact_id' => $contactId);
list($contact) = CRM_Utils_Token::getTokenDetails($params,
$returnProperties,
$skipOnHold,
$skipDeceased,
NULL,
$messageToken,
'CRM_Contact_Form_Task_PDFLetterCommon'
);
...
}
这是我的测试版本:
list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($form);
$skipOnHold = isset($form->skipOnHold) ? $form->skipOnHold : FALSE;
$skipDeceased = isset($form->skipDeceased) ? $form->skipDeceased : TRUE;
foreach ($form->_contactIds as $item => $contactId) {
$params = array('contact_id' => $contactId);
list($contact) = CRM_Utils_Token::getTokenDetails($params,
$returnProperties,
$skipOnHold,
$skipDeceased,
NULL,
$messageToken,
'CRM_Contact_Form_Task_PDFLetterCommon'
);
...
}
(此代码位于我的扩展中的api函数内)
我正在使用$skipOnHold
(false)和$skipDeceased
(true)的默认值,并且只将一个(现有)用户id传递到$params
数组中($tokenParams
)
这是我的问题:
list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($form);
$skipOnHold = isset($form->skipOnHold) ? $form->skipOnHold : FALSE;
$skipDeceased = isset($form->skipDeceased) ? $form->skipDeceased : TRUE;
foreach ($form->_contactIds as $item => $contactId) {
$params = array('contact_id' => $contactId);
list($contact) = CRM_Utils_Token::getTokenDetails($params,
$returnProperties,
$skipOnHold,
$skipDeceased,
NULL,
$messageToken,
'CRM_Contact_Form_Task_PDFLetterCommon'
);
...
}
我的$messageToken
和$returnProperties
变量通过CiviCRM的核心函数正确填充,但当我将它们全部传递到CRM\u Utils\u Token::getTokenDetails()
时,返回的$contact
变量包含一个空数组
我真的没有主意了,我一直在研究CRM/Utils/Token.php
的getTokenDetails()
所在的位置,但是没有找到我代码的问题
提前感谢您的帮助您使用的是哪个版本的D8或D7?我使用的是Drupal 7您是否尝试过了解getTokenDetails()是如何实现的?