astina/deadlink-bundle

此包已被废弃且不再维护。未建议替代包。

Symfony 扩展包,提供查找断链 URL 的服务。

安装数: 1,550

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 4

分叉: 0

类型:symfony-bundle

1.2.1 2014-04-28 11:59 UTC

This package is not auto-updated.

Last update: 2023-07-17 20:50:55 UTC


README

Symfony 扩展包,提供查找断链 URL 的服务。

安装

步骤 1: 添加到 composer.json

"require":  {
    "astina/deadlink-bundle":"dev-master",
}

步骤 2: 启用扩展包

在内核中启用扩展包

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Astina\Bundle\DeadlinkBundle\AstinaDeadlinkBundle(),
    );
}

##使用方法

此扩展包提供了一条命令(astina:deadlink:check),用于检查所谓的“链接源”中的断链,并在找到断链时触发一个 BrokenLinksEvent

创建链接源

  1. 创建一个实现 Astina\Bundle\DeadlinkBundle\Link\LinkSourceInterface 接口的类。
  2. 将该类配置为服务,并标记为 astina_deadlink.link_source

响应断链

  1. 创建一个事件监听器。
  2. 监听 astina_deadlink.broken_links 事件。

示例

<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!
    }
}

此扩展包包含一个 LoggingListener,用于记录断链。然后在日志配置中,你可以决定如何处理日志消息。

示例

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 }

查找断链

运行 astina:deadlink:check 命令来检查所有已注册的链接源中的断链。如果找到断链,将触发 astina_deadlink.broken_links 事件。

####DoctrineLinkSource 如果你使用 Doctrine,并且有一个包含 URL(或包含 URL 的文本)的实体或文档,你可以使用 Astina\Bundle\DeadlinkBundle\Doctrine\DoctrineLinkSource 并配置一个服务,如下所示:

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 }