diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/index.rst | 1 | ||||
| -rw-r--r-- | docs/narr/hooks.rst | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/docs/index.rst b/docs/index.rst index 13edb8a48..4df01341e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -36,6 +36,7 @@ Narrative documentation in chapter form explaining how to use narr/events narr/environment narr/unittesting + narr/hooks glossary API documentation diff --git a/docs/narr/hooks.rst b/docs/narr/hooks.rst new file mode 100644 index 000000000..009943e9e --- /dev/null +++ b/docs/narr/hooks.rst @@ -0,0 +1,48 @@ +.. _hooks_chapter: + +Using ZCML Hooks +================ + +ZCML "hooks" can be used to influence the behavior of the +:mod:`repoze.bfg` framework in various ways. This is an advanced +topic; very few people will want or need to do any of these things. + +Changing the request factory +---------------------------- + +You may change the class used as the "request factory" from within the +:mod:`repoze.bfg` ``Router`` class (the ``Router`` class turns the +WSGI environment into a "request" object which is used ubiquitously +throughout BFG). The default "request factory" is the class +``webob.Request``. You may change it by placing the following ZCML in +your ``configure.zcml`` file. + +.. code-block:: xml + :linenos: + + <utility provides="repoze.bfg.interfaces.IRequestFactory" + component=".my.request.factory"/> + +Replace ``my.request.factory`` with the Python dotted name to the +request factory you want to use. + +Changing the response factory +----------------------------- + +You may change the class used as the "response factory" from within +the :mod:`repoze.bfg` ``chameleon_zpt``, ``chameleon_genshi``, +``chameleon_text`` (the ``render_template_to_response`` function used +within each) and other various places where a Response object is +constructed by :mod:`repoze.bfg`. The default "response factory" is +the class ``webob.Response``. You may change it by placing the +following ZCML in your ``configure.zcml`` file. + +.. code-block:: xml + :linenos: + + <utility provides="repoze.bfg.interfaces.IResponseFactory" + component=".my.response.factory"/> + +Replace ``my.response.factory`` with the Python dotted name to the +response factory you want to use. + |
