Я использую Grapes JS для создания простой веб-страницы.
Я включил скрипт в часть head
следующим образом:
<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
<link rel="stylesheet" type="text/css" href="grapesjs-dev/dist/css/grapes.min.css">
<script type="text/javascript" src="grapesjs-dev/dist/grapes.min.js"></script>
HTML:
<div id="gjs" style="height:0px; overflow:hidden;">
</div>
Javascript:
<script>
var editor = grapesjs.init({
showOffsets: 1,
noticeOnUnload: 0,
container: '#gjs',
fromElement: true,
height: '100%',
fromElement: true,
storageManager: { autoload: 0 },
assetManager: {
assets: [
'http://placehold.it/350x250/78c5d6/fff/image1.jpg',
// Pass an object with your properties
{
type: 'image',
src: 'http://placehold.it/350x250/459ba8/fff/image2.jpg',
height: 350,
width: 250
},
{
// As the 'image' is the base type of assets, omitting it will
// be set as `image` by default
src: 'http://placehold.it/350x250/79c267/fff/image3.jpg',
height: 350,
width: 250
},
],
},
storageManager: {
type: 'remote',
stepsBeforeSave: 1,
autosave: true, // Store data automatically
autoload: true,
urlStore: 'save_now.php',
urlLoad: 'load_now.php',
// ContentType: 'application/json',
// For custom parameters/headers on requests
//params: { _some_token: '....' },
contentTypeJson: true,
storeComponents: true,
storeStyles: true,
storeHtml: true,
storeCss: true,
headers: {
'Content-Type': 'application/json'
},
json_encode:{
"gjs-html": [],
"gjs-css": [],
}
//headers: { Authorization: 'Basic ...' },
}
});
window.editor= editor;
var blockManager = editor.BlockManager;
// 'my-first-block' is the ID of the block
blockManager.add('my-first-block', {
label: 'Simple block',
content: '<div class="my-block">This is a simple block</div>',
});
</script>
Итак, я получаю в панели блоков блок, а именно Simple block
, который я могу перетащить в редактор. При внесении каких-либо изменений autosave
запускается вызовом ajax файла save.php
. Внутри save.php
у меня есть:
$content_found="";
$content_found= file_get_contents('php://input');
mysqli_real_escape_string($conn, $content_found);
echo " content found = ".$content_found;
$sql = "INSERT INTO `grapes_content` (`content_found`)
VALUES ('".$content_found."')";
Но на вкладке сети Chrome инструмента разработчика я вижу:
Непонятно, какие переменные полезной нагрузки я должен сохранить в базе данных и как . Вместо этого я использовал $content_found= file_get_contents('php://input');
, чтобы получить полный контент.
После сохранения в БД на странице refre sh я загружаю страницу с load_now.php
. Внутри load_now.php
у меня есть:
$content_found="";
$sql = "SELECT * FROM `grapes_content`";
$result=$conn->query($sql);
$content_found="";
while($row=mysqli_fetch_assoc($result)){
$content_found=$row['content_found'];
}
echo $content_found;
Но редактор не показывает сохраненных данных.
Я почти уверен, что способ сохранения и извлечения данных неправильный. Итак, точки:
Q1) Что мне следует сохранить в базе данных? И как я могу получить переменные или данные из ajax полезной нагрузки или любым другим способом?
Q2) Как я могу отобразить сохраненные данные в редакторе после перезагрузки страницы?
В редакторе я вижу вариант предварительного просмотра с изображением глаза, которое может показать мне страницу HTML без какого-либо редактора.
Q3) После сохранения данных в базе данных, как я могу показать данные просто как страницу HTML, а не внутри какого-либо редактора?