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

1

Задача

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

Задний план

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

проблема

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

Код

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>
  • 0
    Было бы здорово, если бы вы могли поделиться PHP для сохранения файлов на вашем канале git hub. Я знаю, что вы сняли репо, но хотели бы, чтобы вам не пришлось писать этот код :)
Теги:
content-management-system

1 ответ

0

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

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

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

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

Ещё вопросы

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