J'utilise CKEditor pour créer la partie de mon CMS pour que l'utilisateur saisisse du contenu. Mon CMS est une barre/menu en haut avec les sections du site pour que l'utilisateur puisse créer, mettre à jour ou supprimer une entrée.Pourquoi mes formulaires CMS dynamiques ne se chargent-ils pas à chaque fois?
Lorsque l'utilisateur sélectionne une option, j'envoie la requête pour les éléments de formulaire à php en utilisant jquery AJAX $ .post. La fonction renvoie le code et j'utilise $ ('# loadCMS'). Html (data) pour créer le formulaire sans recharger la page. Ce travail excellent et le débogage montre toujours le code correct retourné. Toutefois, CKEditor ne se charge que la première fois qu'un élément est sélectionné. Il peut charger à nouveau mais c'est rare.
CKEditor est le javascript qui se trouve dans la tête et remplace spécifiée textareas avec l'éditeur
<head>
...
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
...
</head
ce qui est chargé dynamiquement appeler l'éditeur
<textarea name="editor1"></textarea>
<script type="text/javascript">
CKEDITOR.replace("editor1",
{
toolbar :
[
['Source'],
['Cut','Copy','Paste','PasteText','PasteFromWord','-', 'SpellChecker'],
['Undo','Redo','-','RemoveFormat'],
['Bold','Italic','Underline'],
['Subscript','Superscript'],
['NumberedList','BulletedList'],
['Link','Unlink'],
['Image','Flash','HorizontalRule','SpecialChar','Format'],
['Maximize', 'ShowBlocks','-','About']
],
width : '1000',
height : '300',
filebrowserBrowseUrl : '/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl : '/ckfinder/ckfinder.html?Type=Flash'
});
</script>
jquery
$('#portfolioCreate').click(function()
{
var detailsList = new Array('title','medium','original');
$.post('cms.php',{detailsList: detailsList,images:"imageOn",subimgNum:0,content1:"Comments"},
function(data)
{
$('#loadCMS').html(data);
$('#debug').val(data);
});
});
Le les formulaires sont créés dynamiquement à chaque fois. Cependant, les zones de texte remplacées par CKEditor ne les remplacent pas toujours, elles sont simplement vides, pas même la zone textarea. La première fois qu'une sélection est faite cela fonctionne. Si l'utilisateur choisit de créer une nouvelle entrée de blog, la zone de texte est remplacée. Si elle choisit de mettre à jour, la zone de texte ne sera jamais remplacée, même si elle revient créer une nouvelle entrée de blog.
----------------- SOLUTION -------------------------
php dynamique
$key = md5(time().rand())
<textarea name="'.$key.'"></textarea>
<script type="text/javascript">
CKEDITOR.replace("'.$key'",
{
.....
});
<input type="hidden" value="'.$key.'" name="content1Key" />
</script>
php pour tirer de la forme
$content1Key = $_POST['content1Key'];
$content1 = $_Post[$content1Key];
Je sais que c'est un concept étrange et difficile à expliquer. – dcp3450