Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to hide a fieldset (tab) in Plone add/edit form

I have some code in dexterity content type, as below:

form.fieldset(
    'transitionsLog',
    label=_(u"Transitions Log"),
    fields=['t_log']
)
form.mode(t_log='hidden')
t_log = schema.TextLine(
    title=_(u'Transitions log'),
)

In add/edit form, the field t_log hide but fieldset tab 'Transitions Log' still show at form, as above... enter image description here

I have no idea to hide "Transitions Log" tab in add/edit form,

How can I do ?

like image 901
Andy Avatar asked May 14 '15 16:05

Andy


2 Answers

Since the fields are still rendered in hidden mode, the fieldset still exists.

If you want to completely omit the fieldset you need to omit all fields in the fieldset. This can be achieved using the omitted directive form.omitted.

form.fieldset(
    'transitionsLog',
    label=_(u"Transitions Log"),
    fields=['t_log']
)
form.omitted('t_log')  # This will also omit your fieldset
t_log = schema.TextLine(
    title=_(u'Transitions log'),
)
like image 150
Mathias Avatar answered Nov 02 '22 06:11

Mathias


I find a right way as below to omitted field in Custom Add/Edit Form:

from plone.z3cform.fieldsets.utils import remove
...
def updateWidgets(self):
    remove(self, 't_log')
    super(CustomEditForm, self).updateWidgets()
like image 41
Andy Avatar answered Nov 02 '22 04:11

Andy