2017 © Pedro Peláez
 

library notification-bundle

Notification

image

sokil/notification-bundle

Notification

  • Friday, May 5, 2017
  • by sokil
  • Repository
  • 1 Watchers
  • 0 Stars
  • 50 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 7 Versions
  • 0 % Grown

The README.md

Notification Bundle

Total Downloads Build Status Coverage Status, (*1)

Installation

Use composer to install dependency:, (*2)

composer.phar require sokil/notification-bundle

Add bundle to AppKernel:, (*3)

<?php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Sokil\NotificationBundle\NotificationBundle(),
        );
    }
}

Add roles to role hierarchy in file ./app/config/security.yml:, (*4)

security:
    role_hierarchy:
        ROLE_NOTIFICATION_MAIL_PREVIEW: [ROLE_USER]
        ROLE_NOTIFICATION_SCHEMA_MANAGER: [ROLE_USER]

Add routing to ./app/config/routing.yml:, (*5)

notification:
    resource: "@NotificationBundle/Resources/config/routing.yml"
    prefix: /notification

Creating messages

Message builder

First we need to create message builder, which optain some dependencies from container and build message instances. It must extend \Sokil\NotificationBundle\MessageBuilder\AbstractBuilder class:, (*6)

<?php

namespace Acme\Notification\Message;

use \Sokil\NotificationBundle\MessageBuilder\AbstractBuilder;

class SomeMessageBuilder extends AbstractBuilder
{

}

This builder must be registered as service in container and tagged by notification.message_builder:, (*7)

acme.notification.message_builder.some:
    class: Acme\Notification\Message\SomeMessageBuilder
    tags:
        - {name: 'notification.message_builder', messageType: 'someMessage', transport: 'email'}

This service will build messages with type someMessages for transport email. One message may be used for different transports. In this case just add another tag:, (*8)

acme.notification.message_builder.some:
    class: Acme\Notification\Message\SomeMessageBuilder
    tags:
        - {name: 'notification.message_builder', messageType: 'someMessage', transport: 'email'}
        - {name: 'notification.message_builder', messageType: 'someMessage', transport: 'sms'}

Message builder collection

Collection holds number of different messages. Collection used to group messages. It must extends class Sokil\NotificationBundle\MessageBuilder\BuilderCollection. To register new collection, define new service:, (*9)

acme.notification.message_builder_collection.some:
    class: Sokil\NotificationBundle\MessageBuilder\BuilderCollection
    tags:
      - {name: 'notification.message_builder_collection', collectionName: 'some'}

There is already collection with name default, defined as service notification.message_builder_collection., (*10)

To add message builder to collection, set collectionName attribute of builder's notification.message_builder tag:, (*11)

acme.notification.message_builder.some:
    class: Acme\Notification\Message\SomeMessageBuilder
    tags:
        - {name: 'notification.message_builder', messageType: 'someMessage', transport: 'email', collectionName, 'some'}
        - {name: 'notification.message_builder', messageType: 'someMessage', transport: 'sms'}

If collectionName not specified, builder registered in default collection., (*12)

To get builder from collection:, (*13)

<?php
$someSmsMessageBuilder = $container
    ->get('acme.notification.message_builder_collection.some')
    ->getBuilder(
        'someMessage',  // messageType 
        'email'         // transport
    );

If collection's service not defined, it will be created for you automatically, so you need only define collectionName in message builder's tag, and then get collection's service from container by id notification.message_builder_collection.{SOME_COLLECTION_NAME}., (*14)

Schema of notification

Available transports

Configuring custom transport

Preview

To enable preview, add routing to your ./app/config/routing.yml:, (*15)

notification:
    resource: "@NotificationBundle/Resources/config/routing.yml"
    prefix: /notification

Now preview of mails available at route /notification/preview. To access this route, you reed to have ROLE_NOTIFICATION_MAIL_PREVIEW., (*16)

For example we have message builder described in service:, (*17)

acme.notification.message_builder.some:
    class: Acme\Notification\Message\SomeMessageBuilder
    tags:
        - {name: 'notification.message_builder', messageType: 'someMessageType', transport: 'someTransport', collectionName, 'someCollection'}

To see preview, open next URL in your browser:, (*18)

/notification/preview?messageType=someMessageType&transportName=someTransport&collection=someCollection

The Versions

18/09 2016
17/09 2016
11/09 2016

0.3.3

0.3.3.0

Notification

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dmytro Sokil

31/08 2016

0.3.2

0.3.2.0

Notification

  Sources   Download

MIT

The Requires

 

The Development Requires

by Dmytro Sokil