Source of file ControllerViewable.php
Size: 3,029 Bytes - Last Modified: 2023-11-16T22:56:02+01:00
/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/twig-bundle/src/Traits/ControllerViewable.php
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?phpnamespace TIC\TwigBundle\Traits; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\FormInterface; /** * Méthodes utiles pour générer les vues twig associées. * @see https://symfony.com/doc/current/templates.html */trait ControllerViewable {// Initialisation automatique des propriétés à partir du nom de la classe courante use \TIC\CoreBundle\Traits\ContextProperties; // ctxSnake, ctxPath & ctxBundle protected $defaultViewPath = null; protected $defaultViewType = 'html'; protected $defaultViewPage = 'index'; /** * Raccourci pour retourner la vue associée par défaut à l'action du controlleur. * * Exemples: * 'demo_pizza/index.html.twig' * 'admin/demo_pizza/index.html.twig' * '@TICDemo/crud_object/index.html.twig' * @param string $page Nom de base du template Twig (voir $defaultViewPage) * @param string $type Suffixe du type du template (voir $defaultViewType) * @return string */protected function getView(string $page = null, string $type = null): string { if (empty($page)) $page = $this->defaultViewPage; if (empty($type)) $type = $this->defaultViewType; if (null !== $this->defaultViewPath) $path = $this->defaultViewPath; else { $path = $this->ctxSnake; if ($this->ctxPath) $path = \strtolower($this->ctxPath) . '/' . $path; if ($this->ctxBundle) $path = $this->ctxBundle . '/' . $path; } return \sprintf('%s/%s.%s.twig', $path, $page, $type); } /** * Génération du rendu de la vue de l'action spécifiée. * * @param string $action (peu contenir le $type en suffixe) * @param array $parameters (conversion auto des FormType en FormView) * @param Response $response (si une réponse déjà initialisée doit être utilisée) * @return Response (status code 422 si FormType en échec) */protected function renderAction(?string $action = '', array $parameters = array(), Response $response = null): Response { $type = null; if (\strpos($action, '.')) list($action, $type) = \explode('.', $action, 2); // reprise de Symfony\Bundle\FrameworkBundle\Controller\AbstractController::renderForm() if (null === $response) $response = new Response(); foreach ($parameters as $k => $v) { if (!$v instanceof FormInterface) continue; $parameters[$k] = $v->createView(); if (200 === $response->getStatusCode() && $v->isSubmitted() && !$v->isValid()) $response->setStatusCode(422); } return $this->render($this->getView($action, $type), $parameters, $response); } /** * Génération du rendu de la vue de l'action spécifiée. * * @param string $action (peut contenir le $type en suffixe) * @param array $parameters * @return string */protected function renderContent(string $action, array $parameters = array()): string { return $this->renderAction($action, $parameters)->getContent(); } } |