Input bearbeiten vorm Speichern

am 03.05.2010 - 21:47 Uhr in
Hallo liebe Drupalgemeinde,
gibt es eine Möglichkeit einen Wert, der in ein CCK-Feld eingetragen wurde vorm Speichern in die Datenbank zu bearbeiten.
Hintergrund:
Ich möchte über eine Auswahl mittels Radiobutton festlegen um welche Maßeinheit es sich bei dem eingegebenen Wert handelt, diesen aber in einheitlicher Form in die Datenbank schreiben, so dass ich in diesem Feld z.B. immer nur cm Werte habe.
gruß
drupalino
- Anmelden oder Registrieren um Kommentare zu schreiben
Moin, schau Dir mal
am 04.05.2010 - 08:10 Uhr
Moin,
schau Dir mal hook_nodeapi an. Damit kannst Du die Werte vor dem Speichern "abfangen".
Beste Grüße,
Niko
Oder aber du probierst das
am 04.05.2010 - 15:04 Uhr
Oder aber du probierst das mal mit Rules, dürfte eigentlich auch klappen.
Da wird der Wert zwar erst direkt nach dem Speichern geändert, aber hauptsache ist doch eigentlich, dass er geändert wird, oder?
Danke, denke nodeapi ist das
am 05.05.2010 - 19:57 Uhr
Danke,
denke nodeapi ist das Mittel der Wahl.
Allerdings finde ich leider kein passendes Beispiel. Weiss zwar was ich machen soll, doch irgendwie verwirren mich im Netz die Angeaben zur bezeichnung.
Habe z.B. einen Inhaltstypen Names "automobil", wie muss dann meine funktion heissen, wenn ich etwas vor dem Speichern mit den CCK-Feldern machen will? Mein Theme heisst "Mein_theme"
<?php
function mein_theme_nodeapi_presave_automobil(&$node, $op, $a3, $a4)
{
//mach was
}
?>
Irgendwie funktioniert das aber in meiner Template nicht richtig.
Was mache ich falsch!
EDIT: Habe grade http://www.drupalcenter.de/handbuch/14954 gefunden. Heisst das, es geht sowieso icht direkt in der template, sondern nur in einem eigenen Modul?
Keine einen Tipp ?
am 08.05.2010 - 18:08 Uhr
Keiner einen Tipp ?
Ähm, hook_nodeapi() ist keine
am 08.05.2010 - 18:37 Uhr
Ähm, hook_nodeapi() ist keine Theme funktion und es wäre auch nicht sinnvoll, dass was du machen willst auf den theme layer zu schieben. Wenn du wirklich hook_nodeapi verwenden willst, musst du ein eigenes Modul schreiben und darin den den Hook implementieren. Die funktion hiesse dann (wenn das Modul "my_module" heisst):
my_module_nodeapi()
Persönlich bin ich aber der Meinung, dass du den völlig falschen Weg gehst. Die Datenbank sollte wortwörtlich das speichern, was der Benutzer eingibt. Begründung: siehe Input formats - wäre etwas unglücklich, wenn der Benutzer 10 inch angibt, daraus 25,4 cm gemacht werden und er beim nächsten editieren dann vergisst, von Inch auf Zentimeter umzustellen und schwups hat er dann 64,5 cm da stehen.
Die Umrechnung in cm solltest du entweder per JavaScript anbieten (aufwendig) und dann auch nur cm in der DB speichern, oder halt im Theme das Feld so stylen, dass es den richtigen Wert ausgibt.
Danke! Du magst recht haben,
am 08.05.2010 - 18:43 Uhr
Danke!
Du magst recht haben, dass es nicht der richtige Weg ist, jedoch habe ich an einigen anderen Stellen noch so einige Dinge zu machen, die sich nicht bewerkstelligen lassen mit den Funktionalitäten von CCK und Co.
Okay, werde dann nochmal weitersuchen, denn meine Versuche es in ein modul zu packen führen bis jetzt nich nicht zum gewünschten Ergebnis, mein hook wird nicht ausgeführt vorm Speichern der node :-(