2009-02-26 23 views
10

Muszę tracić rozum.Brakująca wartość w polach form.Formularz w ColdFusion

<cfif cgi.request_method eq "POST"> 
    <cfoutput> 
     Form.fieldnames = #form.fieldnames#<br> 
     structKeyList(form) = #structKeyList(form)# 
    </cfoutput> 
</cfif> 

<form method="post" accept-charset="utf-8"> 

    <input type="text" name="graduation_date" value="x"><br> 
    <input type="text" name="foo" value="y"><br> 
    <input type="text" name="bar" value="z"><br> 

    <input type="submit" value="Submit Form" > 

</form> 

Zmienna form.fieldnames powinien zawierać wykaz złożonych dziedzin: foo, bar i graduation_date. Brakuje jednak graduation_date.

Po dalszych testach widzę, że wszystko, co kończy się na _date, jest wykluczone z form.fieldnames.

Chciałem zapytać, co jest nie tak z moim kodem, ale teraz jestem przekonany, że to błąd w ColdFusion. (Jestem na ColdFusion 8.0.1/OS X 10.5.6.)

To błąd w ColdFusion, prawda?

Odpowiedz

15

Może to jest custom validation feature (inaczej "Sprawdzanie poprawności danych formularzy przy użyciu ukrytych pól")?

Zasadniczo, stosując kilka specjalnie sformatowanych pól formularza (field_required, field_date, field_integer, itd.) Można przeprowadzić walidację po stronie serwera formularzy.

To pochodzi z kilku wersji ColdFusion, z powrotem, gdy CFFORM nie był bardzo solidny i uniemożliwia pisanie kodu sprawdzania poprawności dla każdego z pól formularza. Są teraz lepsze sposoby na zrobienie tego teraz, ale wciąż jest tam kompatybilność wsteczna.

+0

Tak, najwyraźniej to wszystko. Nadal błąd IMHO, ale dobrze jest wiedzieć, jaka jest jego podstawowa przyczyna. I że nie straciłem umysłu. :-) –

+2

To nie jest błąd, to tylko zła decyzja, która została utrzymana ze względu na kompatybilność wsteczną. –

+1

Wciąż powiem, że jest to błąd wynikający z tego, że właściwość fieldnames powinna nadal pokazywać wszystkie przesłane pola. Te pola są nadal przesyłane. – williambq

0

Tak samo wpadłem na ten mały problem z ColdFusion 8. Byłem praktycznie gotowy do testowania w locie mojego serwera, próbując dowiedzieć się, dlaczego pole tekstowe o nazwie "asof_date" nie było przetwarzane ani nie pojawiało się w FIELDNAMES pole w moich opublikowanych danych (co tłumaczy, dlaczego było ignorowane). Nazywam to błędem pod względem ortogonalności. Jak tylko zmieniłem nazwę na "pub_asof" działało dobrze. Argh !!

+0

Mam pewną regułę umieszczania typów danych jako prefiksów na moich wartościach/zmiennych/nazwach pól (jak dtAsof, dtCreated, aArray, szZeroBitString, nMyNumber, iMyInteger, itp.). – williambq

Powiązane problemy