.. _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 :mod:`repoze.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:
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:
Replace ``my.response.factory`` with the Python dotted name to the
response factory you want to use.