2015-05-30 62 views
3

我有兩個隱藏字段在我的autoform架構定義如下所示。我希望將這兩個字段與其他字段保存在一起,而不會將它們顯示給應用用戶。但我注意到autoform呈現的html表示這兩個隱藏的字段沒有價值,他們也沒有將其他字段保存到數據庫。不知道我可能在這裏丟失/錯誤?感謝您的幫助流星autoform形式隱藏字段不呈現defaultValue和不保存

Invoice = new SimpleSchema({ 
    clientid: { 
     type: String, 
     optional: true 
    }, 
    total: { 
     type: String, 
     label: 'Total Amount', 
     optional: true 
    }, 
    tax: { 
     type: String, 
     label: 'Taxes', 
     optional: true 
    }, 
    category: { 
     type: String,    
     optional: true, 
     autoform: { 
     type: "hidden",     
     label: false 
     }, 
     defaultValue: 'Test Category' 
    } 
    }); 

    {{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice"}} 

回答

3

我不認爲你可以在你的aldeed Schema中有一個字段,它將呈現/保存在窗體中作爲隱藏字段。所以我建議你通過Sessions傳遞的數據(你最初想傳遞一個隱藏字段)。

例如,如果您使用autoform >> meteormethod來保存表單,那麼您可以將會話內容保存在服務器方法中。如果你沒有使用方法,那麼你可能想通過Autoform.hooks >> onSubmit

+0

謝謝,那我最終通過Autoform.hooks做了什麼 – MChan

1

在我看來,最好把相關的形式向quickform模板的邏輯,對於情況下,你會重用你的模式的另一種形式,例如。

我建議你做以下幾點:

... 
}, 
category: { 
    type: String,    
    optional: true, 
    defaultValue: 'Test Category' 
} 
... 

,並使用omitFields條款(注意,您可以指定多個字段由逗號分隔它們被省略):

{{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice" omitFields="category, foo, bar, ..."}} 

我已經注意到你正在使用method作爲表單類型。如果您手動設置保存數據的方法,則可以考慮在方法本身內指定默認值和自動值。它會給你更多的自由和對你的數據的控制。

+0

傳遞隱藏的數據謝謝,但我不是想從我的窗體中隱藏字段,而是我試圖讓兩個字段贏得在表單上沒有任何UI表示,但將存在於HTML代碼中,這兩個字段中的每一個都會有一個值...有道理?再次感謝 – MChan

+0

爲什麼你希望這些字段「存在於HTML代碼中」但隱藏起來?它沒有任何用處。您可以使用defaultValue或autoValue來讓它們具有特定的值。無論如何,這是必須完成的,因爲這些字段不會顯示給用戶。 – kaoskeya

+0

@kaoskeya嗯,我有一個需要的情況 – MChan

0

您是否嘗試過不讓category字段爲可選?在擁有defaultValue並將字段設置爲optional之間似乎存在概念性問題。