============== TextAreaWidget ============== The widget can render a text area field for a text: >>> from zope.interface.verify import verifyClass >>> from z3c.form import interfaces >>> from z3c.form.browser import textarea The ``TextAreaWidget`` is a widget: >>> verifyClass(interfaces.IWidget, textarea.TextAreaWidget) True The widget can render a input field only by adapting a request: >>> from z3c.form.testing import TestRequest >>> request = TestRequest() >>> widget = textarea.TextAreaWidget(request) Such a field provides IWidget: >>> interfaces.IWidget.providedBy(widget) True We also need to register the template for at least the widget and request: >>> import os.path >>> import zope.interface >>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer >>> from zope.pagetemplate.interfaces import IPageTemplate >>> import z3c.form.browser >>> import z3c.form.widget >>> template = os.path.join(os.path.dirname(z3c.form.browser.__file__), ... 'textarea_input.pt') >>> factory = z3c.form.widget.WidgetTemplateFactory(template) >>> zope.component.provideAdapter(factory, ... (zope.interface.Interface, IDefaultBrowserLayer, None, None, None), ... IPageTemplate, name='input') If we render the widget we get the HTML: >>> print widget.render() Adding some more attributes to the widget will make it display more: >>> widget.id = 'id' >>> widget.name = 'name' >>> widget.value = u'value' >>> print widget.render() Check DISPLAY_MODE: >>> template = os.path.join(os.path.dirname(z3c.form.browser.__file__), ... 'textarea_display.pt') >>> factory = z3c.form.widget.WidgetTemplateFactory(template) >>> zope.component.provideAdapter(factory, ... (zope.interface.Interface, IDefaultBrowserLayer, None, None, None), ... IPageTemplate, name='display') >>> widget.value = u'foobar' >>> widget.mode = interfaces.DISPLAY_MODE >>> print widget.render() foobar Check HIDDEN_MODE: >>> template = os.path.join(os.path.dirname(z3c.form.browser.__file__), ... 'textarea_hidden.pt') >>> factory = z3c.form.widget.WidgetTemplateFactory(template) >>> zope.component.provideAdapter(factory, ... (zope.interface.Interface, IDefaultBrowserLayer, None, None, None), ... IPageTemplate, name='hidden') >>> widget.value = u'foobar' >>> widget.mode = interfaces.HIDDEN_MODE >>> print widget.render()