Dienstag, Januar 21, 2020

Hinzufügen und entfernen von Formularfeldern in Cakephp

Im-suchen nach einem Weg, um ein Formular in cakephp, dass die Benutzer hinzufügen und entfernen von Formularfeldern vor dem Absenden, Nach einem Blick um und fragt auf dem Kuchen IRC scheint die Antwort zu sein, die Jquery verwenden, aber nach Stunden auf der Suche rund ich kann nicht herausfinden, wie es zu tun.

Dem einen Beispiel, das ich von diesem Kuchen fand ich bei – http://www.mail-archive.com/[email protected]/msg61061.html aber nach meiner Bemühungen, ich Schaffe es nicht diesen code, um korrekt zu arbeiten ( ich denke, dass seine calling-Controller /- Modelle, die in der Liste nicht in dem Beispiel)

Fand ich auch eine gerade jquery-Beispiel (http://mohdshaiful.wordpress.com/2007/05/31/form-elements-generation-using-jquery/) die tut, was ich möchte, dass meine form zu tun, aber ich kann nicht herausfinden, wie die cakephp-Formular-Helfer bekommen es richtig funktioniert, und um die Namensgebung zu korrigieren. (offensichtlich ist die $form-helper ist php so kann ich nicht erzeugen irgendetwas, mit, dass, nachdem der browser geladen hat).

Ich ein neues Kuchen und noch nie benutzt jQuery und ich bin absolut ratlos, wie Sie dies tun, also wenn jemand einen cakephp Beispiel Sie haben arbeiten oder kann mir in die richtige Richtung, was ich zu diesem würde sehr geschätzt werden.

Vielen Dank im Voraus

2 Kommentare

  1. 6

    Ich würde die nehmen die gerade jquery route, persönlich. Ich nehme an, Sie könnten PHP generieren Sie den code für die jquery einfügen (so können Sie den form-helper), aber es erhöht die Komplexität, ohne zuzunehmen alles.

    Da die form-helper erzeugt html, werfen Sie einen Blick auf die html Sie möchten, generiert. Angenommen, Sie möchten etwas auf „add another field“, dass, wenn darauf geklickt wird, fügen Sie ein weiteres Feld in der html. Ihrem html-Code Hinzugefügt werden, so etwas wie:

    <input type="text" name="data[User][field][0]" />

    Nun jquery verwenden, um es einzufügen, ich würde etwas tun, wie verbindlich die Funktion add_field dem click-Ereignis auf den link.

        $(document).ready( function() {
          $("#link_id").click( 'add_field' );
          var field_count = 1;
        } );
    
        function add_field()
        {
          var f = $("#div_addfield");
          f.append( '<input type="text" name="data[User][field][' + field_count + ']" />' );
          field_count++;
        }

    Natürlich, wenn ein Benutzer verlässt diese Seite w/o-Einreichung und Rückgabe, verlieren Sie Ihre Fortschritte, aber ich denke, das wird über die Grundlagen von, was Sie versuchen zu erreichen.

    • Perfekt, ich habe bedenke einfach zu tun, aber wollte sehen, ob es war ein mehr Kuchen-zentrierte Art und Weise, es zu tun, Cheers
    • Dies ist eine gute Antwort. wie kann man server-seitige Validierung, die auf dieser? und für die Speicherung verwenden Sie saveAll()?
  2. 0

    War dies mein Ansatz zum entfernen von Elementen:

    In der Ansicht, ich hatte diese:

    echo $form->input('extrapicture1uploaddeleted', array('value' => 0));

    Die Logik, die ich gefolgt war, der Wert 0 bedeutete, noch nicht gelöscht, und der Wert 1 bedeutete gelöscht, nach einem booleschen Logik.

    Dass war ein regelmäßiger input-element, aber mit CSS habe ich verwendet die ‚display: none‘ – Eigenschaft, weil ich nicht wollen, dass Benutzer sehen, dass in form. Dann, was ich Tat, war, dass dann der Benutzer klickt den „Löschen“ – button entfernen Sie ein input-element, um ein Bild hochzuladen, es war eine Bestätigung, und wenn bestätigt, wird der Wert des versteckten input-element mit CSS verändern würde, von 0 bis 1:

        $("#deleteextrapicture1").click(
        function() {
            if (confirm('Do you want to delete this picture?')) {
                $('#extrapicture1upload').hide();
                //This is for an input element that contains a boolean value where 0 means not deleted, and 1 means deleted.
                $('#DealExtrapicture1uploaddeleted').attr('value', '1');
            }
            //This is used so that the link does not attempt to take users to another URL when clicked.
            return false;
        }
    );

    In der Steuerung, die Bedingung $this->data[‚Angebot‘][‚extrapicture1uploaddeleted‘]!=’1′ bedeutet, dass zusätzliche Bild 1 wurde nicht gelöscht (das löschen der upload-button mit JavaScript). $dies->data[‚Angebot‘][‚extrapicture1uploaddeleted‘]==’1′ bedeutet, dass das Bild gelöscht wurde.

    Ich versucht, ein input-hidden-element und ändern Sie dessen Wert mit JavaScript die Art, wie ich oben erklärt, aber ich war immer ein blackhole Fehler von CakePHP Sicherheit. Anscheinend war es nicht erlaubte mir, ändern Sie den Wert des input-Elemente mit JavaScript und dann das Formular abschicken. Aber wenn ich in den regulären input-Elemente (nicht versteckt), ich könnte ändern Ihre Werte mit JavaScript und senden Sie das Formular ohne Probleme. Mein Ansatz war der Einsatz von regulären input-Elemente und blenden Sie Sie mit CSS, da mit input-hidden-Elemente warf die blackhole-Fehler beim ändern Ihrer Werte mit JavaScript und dann Absenden des Formulars.

    Hoffentlich, wie ich es Tat, könnte es einige geben, die Licht als einen möglichen Ansatz zu entfernen Formular-Felder in CakePHP mit JavaScript.

Kostenlose Online-Tests