75 lines
2.8 KiB
ReStructuredText
75 lines
2.8 KiB
ReStructuredText
|
Events
|
||
|
======
|
||
|
|
||
|
The Doctrine RST parser dispatches several different events internally which enable you
|
||
|
to hook in to the core of the parser to add custom functionality.
|
||
|
|
||
|
Event Manager
|
||
|
-------------
|
||
|
|
||
|
You can access the ``Doctrine\Common\EventManager`` instance with the ``getEventManager()`` method:
|
||
|
|
||
|
.. code-block:: php
|
||
|
|
||
|
$eventManager = $configuration->getEventManager();
|
||
|
|
||
|
If you want to set your own you can do so with the ``setEventManager(EventManager $eventManager)`` method:
|
||
|
|
||
|
.. code-block:: php
|
||
|
|
||
|
use Doctrine\Common\EventManager;
|
||
|
|
||
|
$eventManager = new EventManager();
|
||
|
|
||
|
$configuration->setEventManager($eventManager);
|
||
|
|
||
|
Listeners
|
||
|
---------
|
||
|
|
||
|
Add a new listener with the event manager:
|
||
|
|
||
|
.. code-block:: php
|
||
|
|
||
|
use App\Listeners\PostParseDocumentListener;
|
||
|
use Doctrine\RST\Event\PostParseDocumentEvent;
|
||
|
|
||
|
$eventManager->addEventListener(
|
||
|
[PostParseDocumentEvent::POST_PARSE_DOCUMENT],
|
||
|
new PostParseDocumentListener()
|
||
|
);
|
||
|
|
||
|
Now define your listener in ``App\Listeners\PostParseDocumentListener``. The ``postParseDocument()``
|
||
|
method will be notified every time a document is parsed:
|
||
|
|
||
|
.. code-block:: php
|
||
|
|
||
|
namespace App\Listeners;
|
||
|
|
||
|
use Doctrine\RST\Event\PostParseDocumentEvent;
|
||
|
use Doctrine\RST\Event\PostParseDocumentEvent;
|
||
|
|
||
|
class PostParseDocumentListener
|
||
|
{
|
||
|
public function postParseDocument(PostParseDocumentEvent $event)
|
||
|
{
|
||
|
$documentNode = $event->getDocumentNode();
|
||
|
|
||
|
// do something with $documentNode
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Available Events
|
||
|
----------------
|
||
|
|
||
|
The events you can listen for are as follows:
|
||
|
|
||
|
- ``PreBuildScanEvent::PRE_BUILD_SCAN`` - Dispatches a method named ``preBuildScan()`` before files are scanned when using the builder.
|
||
|
- ``PreBuildParseEvent::PRE_BUILD_PARSE`` - Dispatches a method named ``preBuildParse()`` before files are parsed and after they are scanned when using the builder.
|
||
|
- ``PreBuildRenderEvent::PRE_BUILD_RENDER`` - Dispatches a method named ``preBuildRender()`` before files are rendered and after they are parsed when using the builder.
|
||
|
- ``PostBuildRenderEvent::POST_BUILD_RENDER`` - Dispatches a method named ``postBuildRender()`` after files are rendered when using the builder.
|
||
|
- ``PostNodeCreateEvent::POST_NODE_CREATE`` - Dispatches a method named ``postNodeCreate()`` after a node is created.
|
||
|
- ``PreParseDocumentEvent::PRE_PARSE_DOCUMENT`` - Dispatches a method named ``preParseDocument()`` before a node is parsed.
|
||
|
- ``PostParseDocumentEvent::POST_PARSE_DOCUMENT`` - Dispatches a method named ``postParseDocument()`` after a node is parsed.
|
||
|
- ``PreNodeRenderEvent::PRE_NODE_RENDER`` - Dispatches a method named ``preNodeRender()`` before a node is rendered.
|
||
|
- ``PostNodeRenderEvent::POST_NODE_RENDER`` - Dispatches a method named ``postNodeRender()`` after a node is rendered.
|