Mailable collections
Mailable collections and registering your own mailables
To register your mailables:
1. Add a new class that inherits from \Domain\Core\Mails\AbstractMailableCollection class.
2. Override its abstract method called registerMailables to register your mailables.
3. Call static register method of your collection in your service provider.
For example:
<?php
namespace JohnIt\Bc\Shop\Domain\Mails;
use Domain\Core\Mails\AbstractMailableCollection;
class ShopMailableCollection extends AbstractMailableCollection
{
public function registerMailables()
{
$this->push(
OrderConfirmationMailable::class,
);
}
}
register method:
public function register()
{
ShopMailableCollection::register();
}
You can also use dependency injection to have an instance of you collection injected into method parameters:
public function myControllerMethod(ShopMailableCollection $mailables)
{
}
AbstractMailableCollection inherits from Laravel’s Collection class, so you can use all its methods.
If you want to get a list of all registered collections in a system use AbstractMailableCollection::getCollections() method.
Also please, note that \Domain\Core\Mails\Mailable class implements \JohnIt\Bc\Core\Domain\Models\Defaultable interface, so you can instantiate a default (read demo) instance of any Mailable from collection using static default() method on class.