Symfony bundle for the ernadoo/mondial-relay PHP SDK.
- Autowiring of
MondialRelayClientInterface - Symfony Profiler integration (call log, duration)
- Twig helper for the relay point selection widget
- PHP 8.2+
- Symfony 6.4 or 7.x
composer require ernadoo/mondial-relay-bundleIf Symfony Flex is enabled the bundle registers automatically. Otherwise add it to config/bundles.php:
return [
// ...
Ernadoo\MondialRelayBundle\ErnadooMondialRelayBundle::class => ['all' => true],
];Create config/packages/ernadoo_mondial_relay.yaml:
ernadoo_mondial_relay:
credentials:
login: '%env(MR_LOGIN)%'
password: '%env(MR_PASSWORD)%'
customer_id: '%env(MR_CUSTOMER_ID)%'
secret_key: '%env(MR_SECRET_KEY)%'
sandbox: false # set to true (or '%kernel.debug%') for the MR sandboxAdd the environment variables to your .env:
MR_LOGIN=your-login
MR_PASSWORD=your-password
MR_CUSTOMER_ID=BDTEST
MR_SECRET_KEY=your-secret-keyInject MondialRelayClientInterface anywhere in your Symfony application:
use Ernadoo\MondialRelay\Contract\MondialRelayClientInterface;
use Ernadoo\MondialRelay\Shipment\Address;
use Ernadoo\MondialRelay\Shipment\Parcel;
use Ernadoo\MondialRelay\Shipment\ShipmentRequest;
class LabelController extends AbstractController
{
public function __construct(
private readonly MondialRelayClientInterface $mondialRelay,
) {}
public function print(): Response
{
$response = $this->mondialRelay->createShipment(new ShipmentRequest(
sender: new Address('FR', '59510', 'Hem', '4 Av. Pinay', 'Erwan', 'Nader'),
recipient: new Address('FR', '75001', 'Paris', '1 Rue de la Paix', 'Jane', 'Doe'),
parcels: [new Parcel(500)],
));
return $this->redirect($response->labelOutput); // download PDF
}
}{# Renders the Mondial Relay relay-point selection widget #}
{{ mondial_relay_widget('FR', '75001') }}
{# Just the customer ID, for your own JS integration #}
{{ mondial_relay_customer_id() }}composer install
vendor/bin/phpunit