2011-07-12 20 views
5

estoy haciendo una pequeña aplicación web que permite a los usuarios enviar HTML, CSS y Javascript contenidos a través de Ace Editor. En este editor, repetir el contenido almacenado en el editor es suficiente, pero no puedo encontrarlo de todos modos para enviar una entrada de los usuarios a la base de datos. Puedo ver que hay una área de texto generada por JavaScript, pero no estoy seguro de qué está haciendo, cómo llegar a ella o si debería buscar otra cosa completamente.Ace Editor en PHP Web App

estoy principalmente en busca de un campo o algo que puedo usar para tener php presentar en el PP.

Respuesta

14

El contenido de la ventana de edición están disponibles con el método de la sesión getValue. Por ejemplo, aquí es una extensión de la demo ACE estándar para guardar archivos:

saveFile = function() { 
    var contents = env.editor.getSession().getValue(); 

    $.post("write.php", 
      {contents: contents }, 
      function() { 
        // add error checking 
        alert('successful save'); 
      } 
    ); 
}; 

que añade la llamada saveFile a la ya existente "Guardar falso" que se encuentra en demo.js. Puedo reemplazar la alerta con un código como éste:

// Fake-Save, works from the editor and the command line. 
canon.addCommand({ 
    name: "save", 
    bindKey: { 
     win: "Ctrl-S", 
     mac: "Command-S", 
     sender: "editor|cli" 
    }, 
    exec: function() { 
     saveFile(); 
    } 
}); 

archivo El php es sólo una línea:

$r = file_put_contents("foo.txt", $_POST["contents"]) or die("can't open file");

+0

Hola @Dave Ver la actualización de mi respuesta –

+1

que es sangrienta brillante. Gracias. Tengo tres editores en la misma página, así que ya puedo ver cómo puedo usar el código postal de AJAX para diferenciarlos. . 'var htmlContents = env.htmlEditor.getSession() getValue(); var cssContents = env.cssEditor.getSession(). GetValue(); jsContents var = env.jsEditor.getSession() getValue(); ' Obviamente tendría que cambiar también el contenido:. Sección de contenidos también. ¡Gracias, eres IMPRESIONANTE! –

+0

Hola @Paul, ¿hay alguna manera de hacer esto sin una publicación de AJAX? –

Cuestiones relacionadas