Как я могу хранить HTML в приборе Doctrine YML - PullRequest
2 голосов
/ 31 марта 2010

Я работаю с сайтом типа CMS в Symfony 1.4 (Doctrine 1.2), и одна из вещей, которая меня расстраивает, - это невозможность хранить HTML-страницы в фикстурах YML. Вместо этого мне нужно создавать резервные копии данных на SQL, если я хочу удалить и перестроить, что немного вредно, когда Symfony / Doctrine имеет фантастический механизм для выполнения именно этого.

Я мог бы написать механизм, который считывает набор файлов HTML для каждой страницы и заполняет данные таким образом (или даже записывает их как задачу). Но прежде чем идти по этому пути, я хотел бы знать, есть ли способ сохранить HTML в приспособлении YML, чтобы Doctrine мог просто импортировать его в базу данных.

Обновление:

Я попытался использовать symfony doctrine:data-dump и symfony doctrine:data-load, однако, несмотря на то, что дамп правильно создал осветитель с HTML, задача загрузки, похоже, «пропускает» значение столбца с HTML и вводит все остальное в строку. В базе данных поле отображается не как «NULL», а скорее как пустое, поэтому я считаю, что Doctrine добавляет значение столбца как «».

Ниже приведен пример устройства YML, созданного symfony doctrine:data-dump. Я попытался запустить symfony doctrine:data-load против различных форм этого, включая удаление всех экранированных символов (новые строки и кавычки, оставляя только угловые скобки), но это все равно не работает.

  Product_69:
    name: 'My Product'
    Developer: Developer_30
    tagline: 'Text that briefly describes the product'
    version: '2008'
    first_published: ''
    price_code: A79
    summary: ''
    box_image: ''
    description: "<div id=\"featureSlider\">\n    <ul class=\"slider\">\n        <li class=\"sliderItem\" title=\"Summary\">\n            <div class=\"feature\">\n              Some text goes in here</div>\n        </li>\n    </ul>\n  </div>\n"
    is_visible: true

Ответы [ 2 ]

4 голосов
/ 01 апреля 2010

Можете ли вы использовать этот формат ниже?

  Product_69:
    name: 'My Product'
    Developer: Developer_30
    tagline: 'Text that briefly describes the product'
    version: '2008'
    first_published: ''
    price_code: A79
    summary: ''
    box_image: ''
    description:   |
        <div id="featureSlider">
            <ul class="slider">
                <li class="sliderItem" title="Summary">
                    <div class="feature">Some text goes in here</div>
                </li>
            <ul>
        </div>
    is_visible: true
2 голосов
/ 30 июля 2010

У меня была похожая проблема, и я обнаружил, что проблема не в хранении html в базе данных, а в выводе html. Кажется, Symfony выводит текст с html в виде строки с кавычками, чтобы предотвратить межсайтовый скриптинг. Тем не менее, у них есть способ визуализации необработанного текста. Вместо этого используйте:

<?php echo $htmlText ?>

Использование:

<?php echo $sf_data->getRaw('htmlText') ?>

Подробнее об этом можно узнать в Нежное введение в symfony: Глава 7 - Внутри слоя представления :

http://www.symfony -project.org / нежное введение / 1_4 / о / 07-внутри-View-Layer

...