123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Form\Renderer;
- use Symfony\Component\Form\FieldInterface;
- use Symfony\Component\Form\Renderer\Theme\ThemeInterface;
- use Symfony\Component\Form\Renderer\Plugin\PluginInterface;
- class DefaultRenderer implements RendererInterface
- {
- private $field;
- private $template;
- private $theme;
- private $parameters = array();
- private $plugins = array();
- private $initialized = false;
- public function __construct(ThemeInterface $theme, $template)
- {
- $this->theme = $theme;
- $this->template = $template;
- }
- private function setUpPlugins()
- {
- if (!$this->initialized) {
- $this->initialized = true;
- foreach ($this->plugins as $plugin) {
- $plugin->setUp($this);
- }
- }
- }
- public function setTheme(ThemeInterface $theme)
- {
- $this->theme = $theme;
- }
- public function getTheme()
- {
- return $this->theme;
- }
- public function addPlugin(PluginInterface $plugin)
- {
- $this->initialized = false;
- $this->plugins[] = $plugin;
- }
- public function setParameter($name, $value)
- {
- $this->parameters[$name] = $value;
- }
- public function getParameter($name)
- {
- $this->setUpPlugins();
- // TODO exception handling
- return $this->parameters[$name];
- }
- public function getWidget(array $attributes = array(), array $parameters = array())
- {
- return $this->render('widget', $attributes, $parameters);
- }
- public function getErrors(array $attributes = array(), array $parameters = array())
- {
- return $this->render('errors', $attributes, $parameters);
- }
- public function getRow(array $attributes = array(), array $parameters = array())
- {
- return $this->render('row', $attributes, $parameters);
- }
- public function getHidden(array $attributes = array(), array $parameters = array())
- {
- return $this->render('hidden', $attributes, $parameters);
- }
- /**
- * Renders the label of the given field
- *
- * @param FieldInterface $field The field to render the label for
- * @param array $params Additional variables passed to the template
- */
- public function getLabel($label = null, array $attributes = array(), array $parameters = array())
- {
- if (null !== $label) {
- $parameters['label'] = $label;
- }
- return $this->render('label', $attributes, $parameters);
- }
- protected function render($block, array $attributes = array(), array $parameters = array())
- {
- $this->setUpPlugins();
- return $this->theme->render($this->template, $block, array_replace(
- array('attr' => $attributes),
- $this->parameters,
- $parameters
- ));
- }
- }
|