Bonjour,
Je suis en train de travailler sur un système qui permet de modifier le contenu d'un champs à la volé via de l'ajax, mais le problème c'est que je n'arrive pas à éditer, j'arrive juste à récupérer! Donc j'affiche ma page via la méthode view() :
public function show($slug = null, $id = null){
if (!$id) throw new NotFoundException('Aucune page ne correspond à cette ID');
$page = $this->Post->find('first', array(
'conditions' => array('id' => $id)
));
if (empty($page)) throw new NotFoundException('Aucune page ne correspond à cette ID');
if ($slug != $page'Post']'slug']) $this->redirect($page'Post']'link'], 301);
// Si c'est de l'ajax => edit la page
if ($this->request->is('ajax')){
$this->RequestHandler->addInputType('json', array('json_decode', true));
$this->request->data'Post']'id'] = $id;
debug($this->request->data); die();
}
$this->set(compact($page));
$this->set('_serialize', 'page');
}
Ensuite je détecte le mode édition et dès que le mode édition perd le focus, l'édition dans la base de données se fait (c'est cette étape que je n'arrive pas)
$('#edit').focusout(function(){
var text = $(this).html();
var url = document.location.origin;
console.log(text);
$.post(url + '.json', {content: text}, function(data){
}, 'json');
});
j'arrive à récupérer le contenu sous forme request->data mais il faut aussi l'id sinon se sera pas une édition
<?php if ($page'Submenu']'type'] == 'onglet'): ?>
<?= $page'Submenu']'content']; ?>
<ul class="nav nav-tabs" id="myTab">
<?php if (!empty($page'Submenu']'content'])): ?>
<li class="active"><a href="#<?= $page'Submenu']'slug']; ?>"><?= $page'Submenu']'name']; ?></a></li>
<?php endif ?>
<?php foreach ($onglets as $key => $onglet): ?>
<li <?php if (($onglet'Onglet']'id'] == $firstElement'id']) && empty($page'Submenu']'content'])) echo 'class="active"'; ?>>
<span class="link" style="display: none;"><?= $this->Html->url($onglet'Onglet']'link']); ?></span>
<a href="<?= $this->Html->url($onglet'Onglet']'link']); ?>" class="ajax"><?= $onglet'Onglet']'name']; ?></a>
</li>
<?php endforeach ?>
</ul>
<p> </p>
<div class="tab-content edit" contenteditable="true">
<?php foreach ($onglets as $k => $ong): ?>
<div class="tab-pane fade in <?php if ($ong'Onglet']'id'] == 1) echo 'active'; ?>" id="<?= $ong'Onglet']'slug']; ?>">
<?= $ong'Onglet']'content']; ?>
</div>
<?php endforeach; ?>
</div>
<?php endif ?>
Voilà