vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/Helper/FormHelper.php line 14

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
  11. @trigger_error('The '.FormHelper::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.'E_USER_DEPRECATED);
  12. use Symfony\Component\Form\FormRendererInterface;
  13. use Symfony\Component\Form\FormView;
  14. use Symfony\Component\Templating\Helper\Helper;
  15. /**
  16.  * FormHelper provides helpers to help display forms.
  17.  *
  18.  * @author Fabien Potencier <fabien@symfony.com>
  19.  * @author Bernhard Schussek <bschussek@gmail.com>
  20.  *
  21.  * @deprecated since version 4.3, to be removed in 5.0; use Twig instead.
  22.  */
  23. class FormHelper extends Helper
  24. {
  25.     private $renderer;
  26.     public function __construct(FormRendererInterface $renderer)
  27.     {
  28.         $this->renderer $renderer;
  29.     }
  30.     /**
  31.      * {@inheritdoc}
  32.      */
  33.     public function getName()
  34.     {
  35.         return 'form';
  36.     }
  37.     /**
  38.      * Sets a theme for a given view.
  39.      *
  40.      * The theme format is "<Bundle>:<Controller>".
  41.      *
  42.      * @param string|array $themes           A theme or an array of theme
  43.      * @param bool         $useDefaultThemes If true, will use default themes defined in the renderer
  44.      */
  45.     public function setTheme(FormView $view$themes$useDefaultThemes true)
  46.     {
  47.         $this->renderer->setTheme($view$themes$useDefaultThemes);
  48.     }
  49.     /**
  50.      * Renders the HTML for a form.
  51.      *
  52.      * Example usage:
  53.      *
  54.      *     <?php echo view['form']->form($form) ?>
  55.      *
  56.      * You can pass options during the call:
  57.      *
  58.      *     <?php echo view['form']->form($form, ['attr' => ['class' => 'foo']]) ?>
  59.      *
  60.      *     <?php echo view['form']->form($form, ['separator' => '+++++']) ?>
  61.      *
  62.      * This method is mainly intended for prototyping purposes. If you want to
  63.      * control the layout of a form in a more fine-grained manner, you are
  64.      * advised to use the other helper methods for rendering the parts of the
  65.      * form individually. You can also create a custom form theme to adapt
  66.      * the look of the form.
  67.      *
  68.      * @param array $variables Additional variables passed to the template
  69.      *
  70.      * @return string The HTML markup
  71.      */
  72.     public function form(FormView $view, array $variables = [])
  73.     {
  74.         return $this->renderer->renderBlock($view'form'$variables);
  75.     }
  76.     /**
  77.      * Renders the form start tag.
  78.      *
  79.      * Example usage templates:
  80.      *
  81.      *     <?php echo $view['form']->start($form) ?>>
  82.      *
  83.      * @param array $variables Additional variables passed to the template
  84.      *
  85.      * @return string The HTML markup
  86.      */
  87.     public function start(FormView $view, array $variables = [])
  88.     {
  89.         return $this->renderer->renderBlock($view'form_start'$variables);
  90.     }
  91.     /**
  92.      * Renders the form end tag.
  93.      *
  94.      * Example usage templates:
  95.      *
  96.      *     <?php echo $view['form']->end($form) ?>>
  97.      *
  98.      * @param array $variables Additional variables passed to the template
  99.      *
  100.      * @return string The HTML markup
  101.      */
  102.     public function end(FormView $view, array $variables = [])
  103.     {
  104.         return $this->renderer->renderBlock($view'form_end'$variables);
  105.     }
  106.     /**
  107.      * Renders the HTML for a given view.
  108.      *
  109.      * Example usage:
  110.      *
  111.      *     <?php echo $view['form']->widget($form) ?>
  112.      *
  113.      * You can pass options during the call:
  114.      *
  115.      *     <?php echo $view['form']->widget($form, ['attr' => ['class' => 'foo']]) ?>
  116.      *
  117.      *     <?php echo $view['form']->widget($form, ['separator' => '+++++']) ?>
  118.      *
  119.      * @param array $variables Additional variables passed to the template
  120.      *
  121.      * @return string The HTML markup
  122.      */
  123.     public function widget(FormView $view, array $variables = [])
  124.     {
  125.         return $this->renderer->searchAndRenderBlock($view'widget'$variables);
  126.     }
  127.     /**
  128.      * Renders the entire form field "row".
  129.      *
  130.      * @param array $variables Additional variables passed to the template
  131.      *
  132.      * @return string The HTML markup
  133.      */
  134.     public function row(FormView $view, array $variables = [])
  135.     {
  136.         return $this->renderer->searchAndRenderBlock($view'row'$variables);
  137.     }
  138.     /**
  139.      * Renders the label of the given view.
  140.      *
  141.      * @param string $label     The label
  142.      * @param array  $variables Additional variables passed to the template
  143.      *
  144.      * @return string The HTML markup
  145.      */
  146.     public function label(FormView $view$label null, array $variables = [])
  147.     {
  148.         if (null !== $label) {
  149.             $variables += ['label' => $label];
  150.         }
  151.         return $this->renderer->searchAndRenderBlock($view'label'$variables);
  152.     }
  153.     /**
  154.      * Renders the help of the given view.
  155.      *
  156.      * @return string The HTML markup
  157.      */
  158.     public function help(FormView $view): string
  159.     {
  160.         return $this->renderer->searchAndRenderBlock($view'help');
  161.     }
  162.     /**
  163.      * Renders the errors of the given view.
  164.      *
  165.      * @return string The HTML markup
  166.      */
  167.     public function errors(FormView $view)
  168.     {
  169.         return $this->renderer->searchAndRenderBlock($view'errors');
  170.     }
  171.     /**
  172.      * Renders views which have not already been rendered.
  173.      *
  174.      * @param array $variables An array of variables
  175.      *
  176.      * @return string The HTML markup
  177.      */
  178.     public function rest(FormView $view, array $variables = [])
  179.     {
  180.         return $this->renderer->searchAndRenderBlock($view'rest'$variables);
  181.     }
  182.     /**
  183.      * Renders a block of the template.
  184.      *
  185.      * @param string $blockName The name of the block to render
  186.      * @param array  $variables The variable to pass to the template
  187.      *
  188.      * @return string The HTML markup
  189.      */
  190.     public function block(FormView $view$blockName, array $variables = [])
  191.     {
  192.         return $this->renderer->renderBlock($view$blockName$variables);
  193.     }
  194.     /**
  195.      * Returns a CSRF token.
  196.      *
  197.      * Use this helper for CSRF protection without the overhead of creating a
  198.      * form.
  199.      *
  200.      *     echo $view['form']->csrfToken('rm_user_'.$user->getId());
  201.      *
  202.      * Check the token in your action using the same CSRF token id.
  203.      *
  204.      *     // $csrfProvider being an instance of Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface
  205.      *     if (!$csrfProvider->isCsrfTokenValid('rm_user_'.$user->getId(), $token)) {
  206.      *         throw new \RuntimeException('CSRF attack detected.');
  207.      *     }
  208.      *
  209.      * @param string $tokenId The CSRF token id of the protected action
  210.      *
  211.      * @return string A CSRF token
  212.      *
  213.      * @throws \BadMethodCallException when no CSRF provider was injected in the constructor
  214.      */
  215.     public function csrfToken($tokenId)
  216.     {
  217.         return $this->renderer->renderCsrfToken($tokenId);
  218.     }
  219.     public function humanize($text)
  220.     {
  221.         return $this->renderer->humanize($text);
  222.     }
  223.     /**
  224.      * @internal
  225.      */
  226.     public function formEncodeCurrency($text$widget '')
  227.     {
  228.         if ('UTF-8' === $charset $this->getCharset()) {
  229.             $text htmlspecialchars($textENT_QUOTES ENT_SUBSTITUTE'UTF-8');
  230.         } else {
  231.             $text htmlentities($textENT_QUOTES ENT_SUBSTITUTE'UTF-8');
  232.             $text iconv('UTF-8'$charset$text);
  233.             $widget iconv('UTF-8'$charset$widget);
  234.         }
  235.         return str_replace('{{ widget }}'$widget$text);
  236.     }
  237. }