我找不到question, like the one in this link,关于搜索引擎和SO上PDF模板中变量渲染格式的任何答案。你会在这里找到我的调查结果。
PDF模板字段未按我需要格式化,其中包括日期。
var $aos_quotes_date_entered
的PDF模板上的呈现是月/日/年+上午/下午样式的时间。
我只想要订单日/月/年的日期与我需要的法国风格相匹配。
我深入研究了代码并找到了改变代码的地方。
它不干净,只是一个提示,但可能会帮助其他人(并保存它们)
在档案中:[SuiteCRM-7.8.13 folder]\modules\AOS_PDF_Templates\templateParser.php
该课程(我将评论该课程的代码以指出在哪里寻找):
class templateParser {
static function parse_template($string, $bean_arr) {
//no comment on that function
}
function parse_template_bean($string, $key, &$focus){
//some code
foreach ($focus->field_defs as $field_def) {
// some code in the loop
}
//some code
//this is the loop where you can catch the var $aos_quotes_date_entered and alter its value
foreach ($repl_arr as $name => $value) {
//several check are done on some var
//add your own check on the $name and alter the value as you wish it to appear on the pdf generated document
if($name === 'aos_quotes_date_entered'){
$value = [alter the date with correct format]
}
}
}
}
答案 0 :(得分:1)
这将是一个不升级安全的变化。 TemplateParsing是一个需要大量关注的领域,它缺少像你想要做的基本内容+ this或this
当我需要一个与DB中存储的内容不同的格式时,以及当我有自定义的sugarFields时,我就会这样做
date_entered_french_format_c
),就像解释in this video NB:新文本字段不会改变数据库表(在这种情况下为aos_quote
),而是在表fields_meta_data
中定义文本字段并且值为与date_entered_french_format_c
中的元组相关的字段aos_quote
将存储aos_quotes_cstm
(<module>_cstm
,以使其对其他模块具有通用性。)
以下是创建模块逻辑钩子的参考文档 SugarCRM CE Docs
第1步:
在[suitecrm folder]/custom/Extension/modules/AOS_Quotes/Ext/LogicHooks/after_save_logic_hooks.php
:
<?php
$hook_array['after_save'] = Array();
$hook_array['after_save'][] = Array(1, 'after save', 'custom/modules/AOS_Quotes/AOSQuotesAfterSaveClass.php','AOSQuotesAfterSaveClass','after_save_method');
?>
步骤2:解析您的日期字段并根据您的需要对其进行格式化
[suitecrm folder]/custom/modules/AOS_Quotes/AOSQuotesAfterSaveClass.php
中的:
<?php
if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class AOSQuotesAfterSaveClass
{
function after_save_method($bean, $event, $arguments)
{
//logic
$date_entered = (empty($bean->fetched_row['id']))?((new \DateTime())->format('Y-m-d H:i:s')):$bean->fetched_row['date_entered'];
$date_entered_as_date = DateTime::createFromFormat('Y-m-d H:i:s',$date_entered);
$date_format_to_french = $date_entered_as_date->format('d-m-Y');
$bean->date_entered_french_format_c = $date_format_to_french;
$bean->save();
}
}
?>
步骤3:执行修复重建like explained here。
date_entered_french_format_c
可用于您的PDF模板)