Sugarcrm和Smarty:剥离标签..或不?

时间:2014-02-27 15:07:21

标签: html tags smarty sugarcrm

我在使用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 ...)

1 个答案:

答案 0 :(得分:0)

如果你已经到了只有换行符问题的地步,那么这应该删除它。 Smarty nl2br

{$fields.text_courrier_c.value|escape:'htmlentitydecode'|nl2br}