Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Per Post Daten an eine, als Overlay Path gerendertes Menu Item übergeben.

Eingetragen von geoport (101)
am 23.06.2017 - 12:40 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Hallo Forum,

ich habe eine Seite als Menü Item angelegt, diese öffne ich als Overlay mittels Overlay Path. Aktuell öffne ich die Seite über ein Link:

<?php
$form
= array();
   
   
$form['openlayers_bkg_controls_copyright'] = array(
       
'#prefix' => '<div>
                        <div class="bkg-controls-button enable" id="openlayers_bkg_controls_copyright"><a href="openlayers/bkg_controls/copyright"><span class="glyphicons glyphicons-copyright-mark"></span></a></div>'
,
       
'#markup' => '',
       
'#weight' => variable_get('openlayers_bkg_controls_copyright'),
       
'#suffix' => '</div>',
    );
   
   
$form['openlayers_bkg_controls_copyright_test'] = array(
       
'#type' => 'textfield',
       
'#value' => t('OC'),
       
'#weight' => 15,
    );
?>

Dadurch wird mein Overlay vernünftig angezeigt. Ich möchte jetzt aber gerne auch den Inhalt aus dem Feld 'openlayers_bkg_controls_copyright_test' an diese Seite senden, jedoch mit POST. Wenn ich den Button als Submit baue, dann wird die Seite leider immer neugeladen und bei Ajax wird mir gar nichts ausgegeben. Es muss Post sein, weil es sich um eine Unmenge Zeichen handelt.
Meine Fragen:
Ist das überhaupt möglich?
Wonach muss ich suchen?

mfg
Tim

‹ Funktion nach erfolglosem Login ausführen [gelöst]Custom-Block wird nicht angezeigt ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Tim. Wo ist denn der

Eingetragen von Hyp1 (1463)
am 23.06.2017 - 17:31 Uhr

Hallo Tim.

Wo ist denn der Code, den Du oben gepostet hast,
in einem Modul?

Wenn Du eine Form posten möchtest, solltest Du auch die entsprechenden Hooks
benutzen, zumindest hook_form und hook_form_submit.
https://www.drupal.org/docs/7/howtos/how-to-make-a-simple-module-with-a-form-and-menu-link
Ich sehe auch keinen Code der mit Ajax etwas zu tun haben könnte.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Robert, sowohl das Menu

Eingetragen von geoport (101)
am 26.06.2017 - 06:15 Uhr

Hi Robert,

sowohl das Menu Item und das Formular baue ich mir in einem eigenen Modul auf. Mit dem angegebenen Code kann ich eine Seite öffnen ohne das sich die Seite neulädt. Wenn ich das ganze als Submit Form mache lädt sich die Seite leider neu und ich weiß nicht genau wie ich den Overlay Path öffnen kann mit einem redirect bekomme ich die Parameter nicht weitergeschcikt und die Seite lädt sich auch neu.

<?php


$form
['openlayers_bkg_controls_copyright_submit'] = array(
       
'#type' => 'submit',
       
'#value' => t('OC'),
       
'#weight' => 15,
       
'#submit' => array('open_copyright_submit'),
        ),   
    );

function
open_copyright_submit(&$form, &$form_state)
{
    
$form['#action'] = url('openlayers/bkg_controls/copyright');
}
?>

Mit einem Ajax-Aufruf komme ich leider auch nicht weiter, hier weiß ich nicht wie ich das mögliche Ergebnis als Overlay anzeigen lassen kann.

<?php

$form
['openlayers_bkg_controls_copyright_submit'] = array(
       
'#type' => 'submit',
       
'#value' => t('OC'),
       
'#weight' => 15,
       
//'#submit' => array('open_copyright_submit'),
        //'#method' => 'post',
       
'#ajax' => array(
           
'callback' => 'open_copyright_submit',
           
        ),   
    );

?>

Als Parameter der übergeben werden soll gibt es ein via JS gefülltes Formfeld:

<?php
$form
['openlayers_bkg_controls_copyright_testarea'] = array(
       
'#type' => 'textarea',
       
'#value' => t('OC'),
       
'#weight' => 15,
       
'#attributes' => array('id' => array('openlayers_bkg_controls_copyright_textarea')),
    );
?>

mit ebstem Gruß
Tim

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi. Wenn die Seite nicht neu

Eingetragen von Hyp1 (1463)
am 26.06.2017 - 06:37 Uhr

Hi.
Wenn die Seite nicht neu geladen werden soll, musst du im Anhang callback(open_copyright_submit)
Ein json Objekt zurück geben und drupal_exit aufrufen.
Such dir mal ein Tutorial das ajax und json beinhaltet.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Robert, ich kriege es

Eingetragen von geoport (101)
am 04.07.2017 - 14:07 Uhr

Hi Robert,
ich kriege es einfach nicht gebacken, wenn ich drupal_exit() nutze kommt eine leere Seite, wenn ich drupal_json_output() verwende kommt ein AJAXError. Ich habe leider auch kein Tutorial zu diesem Thema gefunden (Ajax und ersetzen etc ja, aber nichts mit einem POST an Callback und Response-Anzeige als Overlay).

mfg
Tim

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, du musst direkt nach

Eingetragen von Hyp1 (1463)
am 04.07.2017 - 14:15 Uhr

Hi,
du musst direkt nach drupal_json_output() drupal_exit() verwenden.
Nach dem JSON Output darf nichts mehr folgen!
Da der JSON Callback ein JSON Objekt zurückliefert und keine HTML Seite
ist klar, dass es eine weisse Seite zurückgibt, daher ist das ja richtig.
In Firebug siehst Du im Request das JSON Object

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 4 Tagen
  • Hey danke
    vor 1 Woche 5 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 20 Stunden
  • In der entsprechenden View
    vor 3 Wochen 20 Stunden
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 20 Stunden
  • gelöst
    vor 5 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 16 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association