首页 > 解决方案 > 在产品功能中添加 Html 标签

问题描述

我需要在创建/编辑产品页面的功能部分保存 html 标签。

我已经更改TYPE_HTMLisCleanHTML在 classes/FeatureValue.php 中,但验证仍然忽略 html 标签。

前任。

'value' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'required' => true, 'size' => 255),

谢谢你。

查看示例

标签: htmlprestashop

解决方案


您必须使用FeatureValuedefinition并对其进行更改,以便它可以保存 HTML,并且需要更改保存产品自定义特征值的文件中的代码。我将使用Overrides ,而不是更改核心文件

按照下面提到的步骤。

Product.php1)在路径上创建文件文件override\classes并将以下代码放入其中。这将保存HTML在值字段中。

<?php
/**
 * @override Product.php
 */

class Product extends ProductCore
{
    /**
     * Add new feature to product
     */
    public function addFeaturesCustomToDB($id_value, $lang, $cust)
    {
        $row = array('id_feature_value' => (int)$id_value, 'id_lang' => (int)$lang, 'value' => pSQL($cust, true));
        return Db::getInstance()->insert('feature_value_lang', $row);
    }
}

FeatureValue.php2)在路径上创建文件override\classes并将以下代码放入其中。更改definition以便它可以验证 HTML。

<?php
/**
 * @override FeatureValue.php
 */

class FeatureValue extends FeatureValueCore
{
    /**
     * @see ObjectModel::$definition
     */
    public static $definition = array(
        'table' => 'feature_value',
        'primary' => 'id_feature_value',
        'multilang' => true,
        'fields' => array(
            'id_feature' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
            'custom' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),

            /* Lang fields */
            'value' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'required' => true, 'size' => 255),
        ),
    );
}

3)autoload新创建的覆盖类文件;class_index.phpvar\cache\dev和文件夹中删除文件var\cache\prod

希望对您有所帮助!


推荐阅读