Откат и предварительный просмотр в CMS - PullRequest
0 голосов
/ 03 августа 2009

Я создаю CMS и использую сериализацию для обработки публикации и отката, которая, кажется, работает нормально. По сути, обычные таблицы сайтов - это то, что отображается, а все, что не отображается, сериализуется в отдельной таблице. Проблема, однако, заключается в том, чтобы заставить работать функции предварительного просмотра.

Поскольку интерфейсная часть создается с использованием обычных вызовов SQL, а все предварительно опубликованные / откатанные данные находятся в отдельной таблице, это будет означать обновление каждого оператора SQL с помощью некоторого причудливого кода, чтобы вывести версию, верную для предварительного просмотра. Это также станет особенно проблематичным с такими вещами, как ограничения и т. Д., И станет кошмаром для переднего конца.

Единственный другой подход, который я вижу, - это отдельная база данных / таблицы для предварительного просмотра, но многие люди могут использовать функцию предварительного просмотра, и я не хочу создавать дубликаты базы данных для каждого человека, использующего предварительный просмотр, так как это будет очень быстро выйти из-под контроля.

Есть ли способ сделать это, который позволит предварительный просмотр и откат предварительного просмотра, но не потребует много от кода, который отображает содержимое базы данных, а также избежать проблемы массового дублирования?

Ответы [ 3 ]

1 голос
/ 03 августа 2009

Я не уверен, что хранение данных вашего контента в более чем 1 таблице в зависимости от ее состояния - это путь.

Я бы сохранял каждую версию контента в одной и той же таблице, имея поле, целью которого было бы установить состояние контента (старая версия, текущая версия, редактируемая в данный момент, все, что вы хотите в зависимости от вашего рабочего процесса редактирования контента) ). Такого рода поля состояния плюс дата даты упростят управление версиями вашего контента.

Я использовал этот метод для различных приложений и всегда был удовлетворен тем, насколько легко было выполнять откат, предварительный просмотр и даже более сложные вещи (псевдо-ветви типа cvs, ...).

0 голосов
/ 03 августа 2009

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

Модель предварительного просмотра не должна выполнять запросы к базе данных, а вместо этого доставляет данные, которые вы в ней храните, перед передачей их в представление.

Рассмотрим этот пример:

//in the controller:
$previewPage->setTitle("foo");
...
//in the view(when previewing):
$previewPage->getTitle(); // returns whatever you stored beforehand

//in the view(regular viewing):
$livePage->getTitle(); // queries the database and returns the result

Чтобы узнать больше о шаблоне Model-View-Controller, вы можете проверить эту статью .

Надеюсь, это поможет.

0 голосов
/ 03 августа 2009

Если вы разделяете Модель, Вид и Контроллер, это не должно быть проблемой: вы просто берете модель из какого-то другого места в контроллере и передаете ее в представление.

...