Как вставить веб-страницу (HTML) в базу данных с помощью Symfony?

0

У нас есть два разных сервера. На одном мы имеем CMS, а с другой - интерфейс. Сервер Frontend основан на Symfony.

Нам нужно создать механизм кэширования/вставки базы данных на внешний сервер.

До сих пор я создал таблицы MySql, называемые static_content, используя доктрину.

Изображение 174551

И это структура внутри статического содержимого.

Изображение 174551

Это текущий код, который у меня есть.

    public function parseAction() {
    $staticContent = new StaticContent();
    $staticContent->setData('html');

    $doctrine = $this->getDoctrine()->getManager();
    $doctrine->persist($staticContent);
    $doctrine->flush();

    return new Response($staticContent);
}

public function showExistationalAction($staticContentId) {
    $staticContent = $this->getDoctrine()
        ->getRepository(StaticContent::class)
        ->find($staticContentId);

    if(!$staticContent) {
        throw $this->createNotFoundException(
            'No html has been found'. $staticContentId
        );
    }
    return new Response($staticContent->getData());
}

Мы используем Symfony 2.8 с MySql 5.7.

Итак, моя конкретная проблема заключается в том, как я могу вставить всю веб-страницу в поле данных в объекте StaticContent? Есть ли переменная, которая просто сохраняет содержимое HTML в Symfony? Что я вызываю вместо setData ('html'); ? На самом деле я считаю, что мне нужно руководство.

  • 0
    И как вы собираетесь сделать недействительным кеш веб-страницы, если пользователь изменяет веб-страницу в CMS?
  • 0
    Привет, спасибо, Раймонд. Это другая проблема, которую я собираюсь решить. Один за раз.
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

Попробуй это;

$this->get('doctrine.orm.default_entity_manager')->persist($staticContent);
$this->get('doctrine.orm.default_entity_manager')->flush();
  • 0
    Спасибо Мерт, за быстрый ответ. Но разве это не то, что я пытаюсь? Не могли бы вы сказать мне разницу между написанным вами и $ doctrine = $ this-> getDoctrine () -> getManager (); $ Doctrine-> сохраняются ($ staticContent); $ Doctrine-> заподлицо ();
0

Вы можете использовать комплект symfony для полноэкранного кеша. Кэш доступен для обнуления в зависимости от даты изменения содержимого. https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/cache.html

  • 0
    Хм, хорошее решение. Но при этом я ничего не вставляю в базу данных, и если я правильно ее читаю, я должен поставить, когда он истекает, и я не хочу, чтобы он истек.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню