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

2 réponses


Bonsoir, on peut avoir le code de la vue?

<?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à