Form API hook_menu() Problem
Eingetragen von netzkoop (1820)
am 20.05.2008 - 12:13 Uhr in
am 20.05.2008 - 12:13 Uhr in
Hallo zusammen,
habe ein Formular erstellt, welches mit
<?php
print drupal_get_form('myform_form');
?>
auch korrekt angezeigt wird. Aber die Ausgabe über URL funktioniert nicht.
Das versuche ich so:
<?php
function myform_menu(){
$items = array();
$items[] = array(
'path' => 'myform',
'title' => t('Mein eigenes Formular zum Testen'),
'callback' => 'myform_page',
'access' => TRUE,
);
return $items;
}
function myform_page()
{
$output = t('Mein Beispielsformular');
$output .= drupal_get_form('myform_form');
return $output;
}
?>
Mein Drupal wohnt im Unterverzeichnis /dp
Beim Aufruf von http://www.meinedomain.de/dp/myform erscheint aber nur "Seite nicht gefunden".
Hab es auch schon mit
<?php
'path' => base_path().'myform',
?>
Jemand ne Idee, wo mein Fehler liegt?
Merci
- Anmelden oder Registrieren um Kommentare zu schreiben
Ohne den Typ ..
am 20.05.2008 - 12:27 Uhr
.. weiss Drupal nicht wohin er das schreiben soll. Wenn das in das normale Menü aufgenommen werden soll setze
'type' => MENU_NORMAL_ITEM
.Unter "Das Menü-System" habe ich ein paar Sachen zusammengeschrieben, evtl. hilft dir das ja noch weiter.
Gruß
UwBach
Eigentlich kann man über
am 20.05.2008 - 12:57 Uhr
Eigentlich kann man über den angegebenen Path die Funktion schon aufrufen. Auch wenn der type nicht angegeben wurde oder der type MENU_CALLBACK ist, also explizit kein Menüeintrag erzeugt werden soll. (Default ist MENU_ITEM_NORMAL)
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
Danke schonmal für die
am 20.05.2008 - 13:13 Uhr
Danke schonmal für die Antworten.
Aber wie geschrieben funktioniert der Path ja leider nicht.
Unabhängig jetzt von Menüeintrag oder nicht müsste doch ein Aufruf über
www.meineseite/dp/myform funktionieren.
Oder wo liegt mein Fehler?
@UweBach
am 20.05.2008 - 13:16 Uhr
du hast oben noch deinen localhost drin ...
aber du bist der dvfux, stimmts :-)
stimmt ..
am 20.05.2008 - 13:22 Uhr
der korrekte Link lautet "Das Menüsystem"
Menü klappt auch
am 20.05.2008 - 13:49 Uhr
Menü klappt auch nicht...
Hab jetzt folgendes versucht:
<?php
function myform_menu()
{
$items = array();
if(!$may_cache){
$items[] = array(
'path' => 'myform',
'title' => t('Eigenes Formular'),
'callback' => 'myform_page',
'access' => TRUE,
'type' => MENU_NORMAL_ITEM
);
}
return $items;
}
?>
Damit müsste doch nun im User-Menü ein Eintrag namens 'Eigenes Formular' erscheinen, der auf .../myform verweist.
Dachte ich...
Bei mir klappt es ..
am 20.05.2008 - 14:22 Uhr
.. sofort. Setze nochmal in "$may_chache" in den Funktionsaufruf.
Ist das Modul auch aktiviert (admin/build/modules)? Wenn ja, mach nochmal einen DB-Update, aber eigentlich sollte es so funktionieren.
Gruß
UwBach
Ist doch zum Mäuse
am 20.05.2008 - 14:40 Uhr
Ist doch zum Mäuse melken!
Also Modul ist aktiviert ( das nehm ich jetzt mal nicht persönlich :-)...)
update.php ausgeführt, cron laufen lassen, Cache ist deaktiviert, in den Logs steht nichts.
Die Funktion anders aufgerufen:
<?php
function myform_menu($may_cache)
{
$items = array();
if($may_cache){
$items[] = array(
...
?>
Könntest du vielleicht mal deine funktionierende function() posten? Obwohl ich keinen Tippteufel sehen kann - aber man weiss ja nie...
Merci
Hier ein wenig Code ..
am 20.05.2008 - 14:59 Uhr
.. mir ist noch aufgefallen das du da schließende PHP-Tags hast. Das ist nicht korrekt.
Das mit dem Modul ist nicht persönlich gemeint gewesen, nur irgendwo muss ja der Fehler sein.
File menumanipulation.info
; $ Id: menumanipulation.info, UwBach, 2008/05/20 $
name = menumanipulation
package = "EigenesMenu"
version = "$Name$"
datestamp = "1208853267"
File menumanipulation.module
<?php
//; $ Id: menumanipulation.module, UwBach, 2008/05/20 $
/**
* @file Menümanipulation der Anwendung
* Erster Versuch
*/
function menumanipulation_menu($may_cache)
{
$items = array();
if(!$may_cache){
$items[] = array(
'path' => 'myform',
'title' => t('Eigenes Formular'),
'callback' => 'menumanipulation_page',
'access' => TRUE,
'type' => MENU_NORMAL_ITEM
);
}
return
$items;
}
function menumanipulation_page()
{
return 'Irgend etwas';
}
Ist getestet und läuft, habe nur eine andere Bezeichnung gewählt.
Gruß
UwBach
Super! Vielen Dank. Das
am 20.05.2008 - 15:42 Uhr
Super! Vielen Dank.
Das Läuft. Werde jetzt mal den Fehler im Detail suchen und dann hier posten woran es liegt.
Die schließenden PHP-Tags hab ich nur hier in der Darstellung -
und nichts persönlich genommen, war nur ein Scherz...
Grüße