Автор Тема: Как сохранять HTML из формы конфигурации модуля?  (Прочитано 554 раз)

21 Июль 2016, 11:45:26
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте!
Написал свой модуль и админку к нему. В админке есть поле, где хочу вставлять простой HTML код, как сохранять полностью этот код, чтобы преста не резала теги?
Прошу прощенья если это глупый вопрос, но у меня не получилось найти ответа...
21 Июль 2016, 12:08:29
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно:
- Объявить тип поля
'type' => 'text', - Не использовать проверку на теги из класса Validate.
21 Июль 2016, 12:11:32
Ответ #2
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А в каком месте сделать это объявление?
У меня форма вынесена в getContent.tpl
вот этот элемент:
<div class="form-group clearfix">
        <label class="col-lg-3">Custom HTML:</label>
        <div>
          <textarea rows="10" cols="45" name="enable_htmlcolor" >
            {if $enable_htmlcolor eq '1'}$enable_htmlcolor{/if}
            {$enable_htmlcolor|@debug_print_var}
            {$confirmation|@debug_print_var}
            success_load = {$success_load|@debug_print_var}
          </textarea>
        </div>
      </div>
21 Июль 2016, 12:13:30
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Там где сохраняются данные из формы - в классе, контроллере или модуле.
21 Июль 2016, 12:18:30
Ответ #4
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот так написал, можно как-то по-другому обработать?

if (Tools::isSubmit('mymod_pc_form'))
{
        Configuration::updateValue('EXTDATAPRODUCT_GRADES', $enable_grades);
        Configuration::updateValue('EXTDATAPRODUCT_HTMLCOLOR', $enable_htmlcolor);
}
21 Июль 2016, 14:01:02
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Для хранения html данных создайте свою таблицу.
21 Июль 2016, 14:05:37
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
21 Июль 2016, 14:28:23
Ответ #7
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
версия престы - 1.6
Эмм... допустим, создал свою таблицу.
Придётся как-то запросы писать или есть стандартные методы для использования в модуле?
21 Июль 2016, 15:26:00
Ответ #8
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Стандарные это когда создаете свою модель MyModel.php от ObjectModel,
class MyModel extends ObjectModel
{
public static $definition = array(
'table' => 'mytable',
'primary' => 'id',
'multilang' => true,
'fields' => array(
'id' =>       array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),
'text' =>    array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml')
),
);
Методы get set
public static function setContent($text = null, $id_lang = null)
{
$content_text = pSQL( $text, true );
$id_lang = (int)$id_lang;
$sql = 'INSERT INTO `'._DB_PREFIX_.self::$definition['table'].'` (`text`,`id_lang`)
VALUES ("'.$text.'","'.$id_lang.'")';

return Db::getInstance()->execute( $sql );
}

public static function getContent($lang)
{
$sql = 'SELECT * FROM '._DB_PREFIX_.self::$definition['table'].' WHERE `id_lang` = "'.(int)$lang.'"';
return Db::getInstance()->getRow($sql);
}
И используте их в своем модуле
MyModel::setContent( Tools::getValue('text'), $this->lang_id );
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Июль 2016, 15:28:10
Ответ #9
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Если текст небольшой и часто к нему не обращаются, то можно в таблице конфигурации сохранять
Configuration::updateValue($this->text, Tools::getValue('mytext'));
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Июль 2016, 16:00:15
Ответ #10
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если текст небольшой и часто к нему не обращаются, то можно в таблице конфигурации сохранять
Configuration::updateValue($this->text, Tools::getValue('mytext'));

"$this->text" в данном случае на что ссылается?

В таком варианте режутся теги.
21 Июль 2016, 16:39:18
Ответ #11
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
$this->textпеременная объявленая в классе модуля.

Configuration::updateValue($this->text, Tools::getValue('mytext'));Теги HTML разрешены. Класс ConfigurationCore (/classes/Configuration.php)
'value' => array('type' => self::TYPE_STRING),
...
/**
   * Update configuration key and value into database (automatically insert if key does not exist)
   *
   * Values are inserted/updated directly using SQL, because using (Configuration) ObjectModel
   * may not insert values correctly (for example, HTML is escaped, when it should not be).
   * @TODO Fix saving HTML values in Configuration model
   *
   * @param string $key Key
   * @param mixed $values $values is an array if the configuration is multilingual, a single string else.
   * @param bool $html Specify if html is authorized in value
   * @param int $id_shop_group
   * @param int $id_shop
   * @return bool Update result
   */
public static function updateValue($key, $values, $html = false, $id_shop_group = null, $id_shop = null)

Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
21 Июль 2016, 22:53:56
Ответ #12
  • Новичок
  • *
  • Сообщений: 13
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за помощь! Надо было ключ добавить чтобы теги не резались)