astina / deadlink-bundle
Symfony bundle that provides services to find broken link URLs.
Installs: 1 551
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 0
Type:symfony-bundle
This package is not auto-updated.
Last update: 2023-07-17 20:50:55 UTC
README
Symfony bundle that provides services to find broken link URLs.
Installation
Step 1: Add to composer.json
"require": { "astina/deadlink-bundle":"dev-master", }
Step 2: Enable the bundle
Enable the bundle in the kernel:
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Astina\Bundle\DeadlinkBundle\AstinaDeadlinkBundle(), ); }
##Usage
The bundle provides a command (astina:deadlink:check
) that checks so called "link sources" for broken links and dispatches a BrokenLinksEvent
if one or more broken links are found for a given source.
To create a link source:
- Create a class that implements
Astina\Bundle\DeadlinkBundle\Link\LinkSourceInterface
. - Configure that class as a service and tag it as
astina_deadlink.link_source
.
To react to broken links:
- Create an event listener.
- Listen to the
astina_deadlink.broken_links
event.
Example:
<service id="deadlink_listener" class="Acme\FooBundle\DeadlinkListener"> <tag name="kernel.event_listener" event="astina_deadlink.broken_links" method="onBrokenLinks" /> </service>
namespace Acme\FooBundle; use Astina\Bundle\DeadlinkBundle\Event\BrokenLinksEvent; class DeadlinkListener { public function onBrokenLinks(BrokenLinksEvent $event) { // ZOMG! } }
This bundle comes with a LoggingListener
which logs broken links. In the logger config you can then decide what to do with the log message.
Example:
services: astina_deadlink.listener.logger: class: Astina\Bundle\DeadlinkBundle\Event\LoggingListener arguments: - @logger - critical # log broken links as critical message tags: - { name: kernel.event_listener, event: astina_deadlink.broken_links, method: onBrokenLinks }
Find broken links:
Run the astina:deadlink:check
command to check all registered link sources for broken links. If a broken link is found, the astina_deadlink.broken_links
event is dispatched.
####DoctrineLinkSource
If you have are using Doctrine and have an Entity or Document that contain URLs (or text that contains URLs) you can use Astina\Bundle\DeadlinkBundle\Doctrine\DoctrineLinkSource
and configure a service like this:
services: my_link_source: class: Astina\Bundle\DeadlinkBundle\Doctrine\DoctrineLinkSource arguments: - @doctrine - AcmeFooBundle:MyEntity - [ text, lead ] # properties of the given entity that contain URLs - [] # optional: array of criteria to filter the entities tags: - { name: astina_deadlink.link_source }