2009-02-26 33 views
10

Tôi phải mất trí.Giá trị bị thiếu từ form.fieldnames trong 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> 

Biến form.fieldnames nên bao gồm một danh sách các lĩnh vực nộp: foo, bar, và graduation_date. Nhưng thiếu graduation_date.

Sau khi kiểm tra thêm một chút, tôi thấy rằng mọi thứ kết thúc bằng _date bị loại trừ khỏi form.fieldnames.

Tôi sẽ hỏi mã của tôi có vấn đề gì, nhưng giờ tôi khá tin rằng đó là lỗi trong Coldfusion. (Tôi đang sử dụng ColdFusion 8.0.1/OS X 10.5.6.)

Đó là lỗi trong ColdFusion, phải không?

Trả lời

15

Có thể đó là custom validation feature (còn gọi là "Xác thực dữ liệu biểu mẫu bằng cách sử dụng các trường ẩn")?

Về cơ bản, bằng cách sử dụng một số trường biểu mẫu được định dạng cụ thể (field_required, field_date, field_integer, v.v.) bạn có thể thực hiện xác thực phía máy chủ biểu mẫu của mình.

Điều này quay trở lại một số phiên bản của ColdFusion, trở lại khi CFFORM không thực sự mạnh mẽ và giúp bạn không phải viết mã xác nhận cho mỗi một trong các trường biểu mẫu của bạn. Có những cách tốt hơn để làm điều này ngay bây giờ, nhưng nó vẫn còn trong đó cho khả năng tương thích ngược.

+0

Vâng, có vẻ như vậy. Vẫn là một lỗi IMHO, nhưng nó là tốt để biết nguyên nhân cơ bản là gì. Và tôi đã không mất trí. :-) –

+2

Nó không phải là một lỗi, nó chỉ là một quyết định thực sự xấu được duy trì vì lợi ích tương thích ngược. –

+1

Tôi vẫn sẽ nói đó là lỗi dựa trên thực tế là thuộc tính tên trường sẽ vẫn hiển thị tất cả các trường được gửi. Các trường này vẫn được gửi. – williambq

0

Vâng, tôi đã gặp phải vấn đề nhỏ này với ColdFusion 8. Tôi đã sẵn sàng để kiểm tra chuyến bay máy chủ của tôi cố gắng tìm ra lý do tại sao hộp văn bản có tên "asof_date" không được xử lý cũng không hiển thị trong FIELDNAMES trường trong dữ liệu đã đăng của tôi (điều này giải thích tại sao nó bị bỏ qua). Tôi gọi đây là lỗi về trực giao. Ngay sau khi tôi đổi tên thành "pub_asof" nó hoạt động tốt. Argh !!

+0

Tôi có quy tắc để đặt các loại dữ liệu làm tiền tố trên giá trị/biến/tên trường của tôi (như dtAsof, dtCreated, aArray, szZeroBitString, nMyNumber, iMyInteger, v.v.) – williambq

Các vấn đề liên quan