12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace WebserviceBundle\Form\Transformer;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Component\Form\DataTransformerInterface;
- use Symfony\Component\Form\Exception\TransformationFailedException;
- class ClientTransformer implements DataTransformerInterface
- {
- private $em;
- public function __construct(EntityManagerInterface $em)
- {
- $this->em = $em;
- }
- /**
- * Transforms an object (issue) to a string (number).
- *
- * @param Int | null $client
- * @return string
- */
- public function transform($client)
- {
- if (null === $client) {
- return '';
- }
- return $client;
- }
- /**
- * Transforms a string (query pattern) to an client id (using the web service).
- *
- * @param string $client_query_param
- * @return Issue|null
- * @throws TransformationFailedException if object (issue) is not found.
- */
- public function reverseTransform($client_query_param)
- {
- // no issue number? It's optional, so that's ok
- if (!$issueNumber) {
- return;
- }
- $issue = $this->em
- ->getRepository(Issue::class)
- // query for the issue with this id
- ->find($issueNumber)
- ;
- if (null === $issue) {
- // causes a validation error
- // this message is not shown to the user
- // see the invalid_message option
- throw new TransformationFailedException(sprintf(
- 'An Client could not be found for the query "%s"!',
- $issueNumber
- ));
- }
- return $issue;
- }
- }
|