2013-10-10 74 views
1

我想創建一個自定義的編輯/添加窗體爲我使用敏捷類型建立的表單包。我正在關注Dexterity Developer Manual部分中的Plone開發人員文檔中的架構驅動類型教程。到目前爲止,我已經成功創建了兩種內容類型的敏捷包:常見問題和問題。我的常見問題敏捷內容類型是一個容器,我的問題敏捷內容類型只能添加到我的常見問題解答容器中。Plone自定義編輯/添加表單使用敏捷/ Grok

FAQ內容類型 - FAQ.py

from product.faq import MessageFactory as _ 
from five import grok 
from plone.dexterity.content import Container 
from plone.directives import dexterity, form 
from zope import schema 
from zope import interface 

from Acquisition import aq_inner 
from Products.CMFCore.utils import getToolByName 
from product.faq.question import IQuestion 

class IFAQ(form.Schema): 
    """ Project FAQ Container """ 

class FAQ(Container): 
    grok.implements(IFAQ) 

class View(grok.View): 
    """ FAQ View Class """ 
    grok.context(IFAQ) 
    grok.require('zope2.View') 

    def questions(self): 
     """ Return a catalog search result of questions to show """   
     context = aq_inner(self.context) 
     catalog = getToolByName(context, 'portal_catalog') 

     return catalog(object_provides=IQuestion.__identifier__, 
         path='/'.join(context.getPhysicalPath()), 
         sort_on='sortable_title') 

題型 - Question.py

from product.faq import MessageFactory as _ 
from five import grok 
from plone.dexterity.content import Container 
from plone.directives import dexterity, form 
from zope import schema 
from zope import interface 

class IQuestion(form.Schema): 
    """ Project FAQ Question Type """ 

    title = schema.TextLine(
     title=_(u"Question"), 
    ) 

    answer = schema.TextLine(
     title=_(u"Answer"), 
    ) 

    # Used to group questions into sections 
    section = schema.TextLine(
     title=_(u"Section"), 
    ) 

class Question(Container): 
    grok.implements(IQuestion) 

class Edit(grok.Form): 
    """ FAQ Question Edit Class """ 
    grok.context(IQuestion) 
    grok.require('zope2.View') 

我需要能夠自定義表單標記爲添加和編輯視圖。到目前爲止,我已經能夠創建一個沒有功能的編輯視圖。如何將功能添加回我的表單?

edit.py

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" 
     xmlns:tal="http://xml.zope.org/namespaces/tal" 
     xmlns:metal="http://xml.zope.org/namespaces/metal" 
     xmlns:i18n="http://xml.zope.org/namespaces/i18n" 
     lang="en" 
     metal:use-macro="context/main_template/macros/master" 
     i18n:domain="product.faq"> 
    <body> 
     <metal:main fill-slot="content-core"> 
      <metal:content-core define-macro="content-core"> 
       <h2>This is a Edit Form</h2> 
       <ul class="list-unstyled"> 
        <li><strong>Plone's Title is: </strong><i tal:content="context/Title"></i></li> 
        <li><strong>Plone's Description is: </strong><i tal:content="context/Description"></i></li> 
       </ul> 
       <form class="form-horizontal clearfix" role="form"> 
        <div class="form-group"> 
         <label for="faqQuestion" class="col-lg-2 control-label">Question</label> 
         <div class="col-lg-10"> 
          <input tal:attributes="value context/title" type="textfield" class="form-control" id="faqQuestion" placeholder="Enter a question"> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="faqAnswer" class="col-lg-2 control-label">Answer</label> 
         <div class="col-lg-10"> 
          <input tal:attributes="value context/answer" type="textfield" class="form-control" id="faqAnswer" placeholder="Enter a answer"> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="faqSection" class="col-lg-2 control-label">Section</label> 
         <div class="col-lg-10"> 
          <input tal:attributes="value context/section" type="textfield" class="form-control" id="faqSection" placeholder="Enter a grouping"> 
         </div> 
        </div> 
        <div class="btn-group pull-right"> 
         <a href="#" class="btn btn-primary">Save</a> 
         <a href="#" class="btn btn-danger">Cancel</a> 
        </div> 
       </form> 
      </metal:content-core> 
     </metal:main> 
    </body> 
</html> 

我的另一個問題是,我該如何創建自定義添加的看法?當我點擊添加我的網址指向http://localhost:8080/demo/faq/++add++product.faq.question。 ++ ++ ++是否表示它是一個小部件?

在此先感謝。

+0

參見['++加入++'-traversal適配器]文檔(https://developer.plone.org/reference_manuals/external/plone.app。靈巧/高級/自定義添加和編輯,forms.html#內容 - 添加序列),[自定義添加表單](https://developer.plone.org/reference_manuals/external/plone.app.dexterity/advanced/custom-add-and-edit-forms.html#custom-add-形式),[自定義編輯形式](http://developer.plone.org/content/dexterity.html#custom-edit-form),並告訴我們,如果你可以繼續他們。信息:文檔分佈在不同的地方,但我讀到了,有計劃很快將它們合併:) –

+0

@IdaEbkes我已經查看了所提供的文檔,但我還沒有弄清楚。我已經嘗試了dexterity.AddForm和gork.form方法。就像我之前所說的,我可以讓我的自定義編輯表單顯示,但不是自定義添加表單。 –

+0

看起來你沒有關注文檔。理想情況下,你這樣做,描述每一步,並在哪一點上確切地說沒有工作。也許你也想解釋一下用例。問候,艾達 –

回答

相關問題