我在使用Synolia Pdf模板的Sugarcrm Enterprise 6.5.16下遇到了一个错误。 我的客户将模板设置如下:
Pdf模板,具有以下内容:
现在通过此pdf给你
{$fields.text_courrier_c.value}
。
因此它给我带来了texte_courrier_c字段的内容。该字段是备忘录字段。 所以,它充满了html。所以,基本上我们有texte_courrier_c的这个值
<p><strong>blablablabla</strong><br/>Test carriage return</p>
但是在显示器中,她不想显示html标签。 所以,她只想展示
给你 blablablabla
现在通过此pdf测试回车。
这就是她所做的:
{$fields.text_courrier_c.value|escape:'htmlentitydecode'}
但是,通过这样做,我们有一个回车之前字段的值和 AFTER 它,这不是我们想要的。 像这样:
给你
blablablabla
测试回车
现在通过这个pdf。
这是一个句子,我们不希望在模板的文本和字段的值之间回车...
我尝试使用替代
标记,但它不起作用。
而{strip}
或strip_tags
会删除每个htmltag,但我可以使用<strong>
标记来保留在该字段中的某个位置。
所以,要说清楚:我想要的只是删除第一个和最后一个标记,所以我在teplate的文本和字段值之间没有回车符。我尝试添加一些{php}echo str_replace('<p>','',{$fields.text_courrier_c.value});{/php}
但是ir不起作用,因为标签<p>
由smarty翻译用于我的pdf模板。
您对我如何实现这一目标有任何想法吗?
非常感谢你!
编辑:发现它: 首先,我做了一个logic_hook before_save调用以下函数:
function stripPTags(&$bean, $event, $arguments=null)
{
if(!empty($bean->texte_courrier_c)){
$bean->texte_courrier_c = html_entity_decode($bean->texte_courrier_c);//déjà, on encode et on décode.
$texteStripped = strip_tags($bean->texte_courrier_c,'<strong><br /><br><span><em><a><ol><li><ul><address><sup><sub><pre><hr><h1><h2><h3><h4><h5><img><table><tbody><tr><td>');//on enlève tous les <p>, MAIS PAS LE RESTE
$bean->texte_courrier_c=htmlentities($texteStripped);//on re balance
//var_dump($bean->texte_courrier_c);exit();die();
$bean->save();//et on sauvegarde
}
}
在PDF模板中,我按{$fields.texte_courrier_c.value|escape:'htmlentitydecode'}
请求texte_courrier_c内容
它确实有效,即使客户必须改变他的习惯(比如回归,也必须按Shift + Enter ...)
答案 0 :(得分:0)
如果你已经到了只有换行符问题的地步,那么这应该删除它。 Smarty nl2br
{$fields.text_courrier_c.value|escape:'htmlentitydecode'|nl2br}