2013-07-10 60 views
2

我必須創建一個多頁表單,並想知道我是否可以按照輔助函數上的Pylons文檔來構建CKAN中的表單?在CKAN中是否有任何幫助函數來構建表單?

CKAN中是否有任何文檔用於創建表單?請建議最佳方法。

+0

請包含一些代碼,以便您的同事可以看到您嘗試過的內容。你不能指望SO社區爲你做這一切。 – simonmorley

回答

5

CKAN表單通常會導入位於ckan/templates/macros中的一些宏。看看form.html,你就會明白。也看看其中一個例子(ckanext/example_idatasetform)。

基本上你想導入的宏與{% import 'macros/form.html' as form %},然後建立形式與宏,就像這樣:

{% block package_basic_fields_custom %} 
{{ form.input('custom_text', label=_('Custom Text'), 
id='field-custom_text', placeholder=_('custom text'), 
value=data.custom_text, error=errors.custom_text, classes= ['control-medium']) }} 
{% endblock %} 

AFAIK有關於如何在CKAN創建表單沒有特殊的機制的文檔。您應該查看ckan/templates /包中的相關模板

+0

感謝您的幫助。希望我能夠深入瞭解您提供的指針,以瞭解如何在CKAN中創建表單。 – user1380140

+0

我能夠使用CKAN中的表單宏創建一個簡單的表單。但是,我無法驗證表單域和設置域錯誤消息。我應該在哪裏創建表單域驗證規則?我假設「錯誤」是一個字典對象,我必須在表單代碼開始之前填充它。 – user1380140

+0

CKAN提供了一些基本的驗證器,您可以使用插件工具包。看看上面提到的ckanext/example_idatasetform如何在plugin.py中做到這一點。驗證器函數位於ckan/lib/navl/validators.py中。編寫自己的驗證應該是可能的,但我從來沒有這樣做過。 –

0

是的,CKAN 2.6.0a的內置表單元素宏的文檔在/usr/lib/ckan/default/src/ckan/ckan/templates/macros/form.html的評論中以及Frontend Development Guidelines, under Templating中也有說明。

注意,文檔告訴你添加一行:

{% import 'macros/form.html' as form %}

,但如果你要覆蓋現有模板(使用{% ckan_extends %}),你通常不必添加此導入行,因爲這通常已經存在,或者已經包含在父模板中。

相關問題