javascript — инструменты для работы с контентом дают подтверждение сохранения, но не сохраняют в проекте php

Задача

Чтобы сделать мой сайт редактируемым с помощью Инструменты контента

Фон

Я добавил Content Tools на свой сайт Пакетные мулы. У меня есть разделы, которые могут быть отредактированы публикой. На данный момент безопасность не является проблемой, это очень маленький сайт.

проблема

Это дает мне галочку, что он сохранил, в отличие от того, где я получил бы «X» означает ошибку. Как вы можете видеть в этот скринкаст. Но когда я обновляю страницу, кажется, что она на самом деле не сохраняется.

Код

Repo

https://github.com/JGallardo/package-mules

HTML (для index.php)

<!DOCTYPE hmtl>
<html lang="en">
<?php include 'includes/head.html';?>

<body>
<?php include 'includes/nav.html';?>
<section class="container">
<div class="row">
<div class="col-md-12">
<h1>Package Mules</h1>
<p>Welcome to the future home of package mules. Our mission is to help bring movers together with low cost options for moving.</p>
<p>We set up an editable page so we can get public feedback. Please be considerate and only post appropriate content.</p>
</div>
</div>
</section>

<section class="container">
<div class="row">
<div class="col-md-12">
<h2>The thing you hate most about moving is?</h2>
</div>
<div class="col-md-12">
<div data-editable data-name="moving-1">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-2">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-3">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-4">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-5">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
<div data-editable data-name="moving-6">
<blockquote>
[Enter content here]
</blockquote>
<p>[your name]</p>
</div>
</div>
</div>

</seciton>

<?php include 'includes/footer.html';?>
<?php include 'includes/scripts.html';?>
<script>
window.addEventListener('load', function() {
var editor;

ContentTools.StylePalette.add([
new ContentTools.Style('Author', 'author', ['p'])
]);

editor = ContentTools.EditorApp.get();
editor.init('*[data-editable]', 'data-name');

editor.bind('save', function (regions) {
var name, payload, xhr;

// Set the editor as busy while we save our changes
this.busy(true);

// Collect the contents of each region into a FormData instance
payload = new FormData();
for (name in regions) {
if (regions.hasOwnProperty(name)) {
payload.append(name, regions[name]);
}
}

// Send the update content to the server to be saved
function onStateChange(ev) {
// Check if the request is finished
if (ev.target.readyState == 4) {
editor.busy(false);
if (ev.target.status == '200') {
// Save was successful, notify the user with a flash
new ContentTools.FlashUI('ok');
} else {
// Save failed, notify the user with a flash
new ContentTools.FlashUI('no');
}
}
};

xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', onStateChange);
xhr.open('POST', '/index.php');
xhr.send(payload);

var_dump($_POST);
});
});

</script>

</html>

1

Решение

Я считаю, что проблема здесь заключается в var_dump($_POST); позвоните в ваш JavaScript. Я не программист PHP, но я предполагаю, что это вызов PHP, и он должен быть внутри тегов PHP.

Причины, по-видимому, работают потому, что onStateChange обратный вызов вызывается после этой ошибки. Так что процесс событий выглядит примерно так:

  • Вы нажимаете кнопку сохранения.
  • Редактор запускает save событие, вызывающее ваш код сохранения.
  • Редактор переводится в состояние занятости с помощью кода сохранения.
  • Код сохранения привязывает функцию обратного вызова к вашему index.php запрос, а затем отправляет его на сервер.
  • Ошибка возникает из-за var_dump($_POST); заявление. Эта ошибка приводит к тому, что выполнение кода останавливается и поэтому никогда не возвращается в редактор, что означает, что редактор фактически не выходит из режима редактирования.
  • Отправленный запрос успешно выполняется, и по ответу от сервера зарегистрирован обратный вызов (onStateChange) называется.
  • onStateChange функция обратного вызова устанавливает редактор в незанятое состояние и запускает сообщение OK, потому что вы получили ответ 200 от index.php,

Это дает иллюзию, что все прошло нормально, когда на самом деле произошла ошибка в вашем JavaScript. При проверке консоли вы должны увидеть ошибку.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru