43 lines
1.2 KiB
PHP
43 lines
1.2 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Service;
|
|
|
|
|
|
use App\Exception\NonExistentServiceException;
|
|
use App\Provider\Provider;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
|
|
class ProviderParameterConverter implements ParamConverterInterface
|
|
{
|
|
private $resolver;
|
|
|
|
/**
|
|
* ProviderParameterConverter constructor.
|
|
*
|
|
* @param $resolver
|
|
*/
|
|
public function __construct(ProviderResolver $resolver)
|
|
{
|
|
$this->resolver = $resolver;
|
|
}
|
|
|
|
public function apply(Request $request, ParamConverter $configuration)
|
|
{
|
|
$provider = $request->get('provider');
|
|
|
|
try {
|
|
$request->attributes->set('provider', $this->resolver->resolve($provider));
|
|
} catch (NonExistentServiceException $exception) {
|
|
throw new NotFoundHttpException("There is no such provider as '$provider'.", $exception);
|
|
}
|
|
}
|
|
|
|
public function supports(ParamConverter $configuration)
|
|
{
|
|
return $configuration->getName() === 'provider' && is_a($configuration->getClass(), Provider::class, true);
|
|
}
|
|
} |