Per Post Daten an eine, als Overlay Path gerendertes Menu Item übergeben.
Eingetragen von geoport (101)
am 23.06.2017 - 12:40 Uhr in
am 23.06.2017 - 12:40 Uhr in
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
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Tim. Wo ist denn der
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
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi Robert, sowohl das Menu
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
www.geoportal.de
Hi. Wenn die Seite nicht neu
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
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hi Robert, ich kriege es
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
www.geoportal.de
Hi, du musst direkt nach
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
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)