/** * @param \Twig_Environment $environment * @param array $context * @param string $id * @param string $template * @return string */ public function renderGrid(\Twig_Environment $environment, $context, $id, $template = 'IntegratedWebsiteBundle:Page:grid.html.twig') { if (isset($context['form']) && ($form = $context['form']) instanceof FormView) { /** @var FormView $form */ foreach ($form->offsetGet('grids') as $grid) { if ($grid->vars['value'] instanceof Grid && $grid->vars['value']->getId() == $id) { return $this->renderer->searchAndRenderBlock($grid, 'row'); } } if (isset($form->vars['value']) && ($page = $form->vars['value']) instanceof Page) { /** @var Page $page */ $grid = new Grid(); $grid->setId($id); $page->addGrid($grid); $form = $this->form->create('integrated_website_page', $page)->createView(); // Render form for the newly added grid return $this->renderer->searchAndRenderBlock($form->offsetGet('grids')->offsetGet($page->indexOf($grid)), 'row'); } } if (isset($context['page']) && ($page = $context['page']) instanceof Page) { /** @var Page $page */ return $environment->render($template, ['grid' => $page->getGrid($id)]); } }
/** * Renders only specified fields. Useful for dynamic ajax forms. */ protected function processRender(FormInterface $form, Request $request) { $presenter = $this->getPresenter(); if (!$presenter->isAjax()) { throw new BadRequestException('The render signal is only allowed in ajax mode.'); } $fields = $request->getPost($this->lookupPath('Nette\\Application\\UI\\Presenter', true) . self::NAME_SEPARATOR . 'fields'); if (!$fields) { throw new BadRequestException('No fields specified for rendering.'); } $form->handleRequest($request); if (!$form->isSubmitted()) { throw new BadRequestException('The form was not submitted.'); } $view = $this->getView(); $widgets = []; foreach ($fields as $field) { // Validate the field identifier for security reasons. A dot in the identifier would be particularly dangerous. if (!Strings::match($field, '~^(?:\\[\\w++\\])++$~')) { throw new BadRequestException(sprintf('Field identifier "%s" contains unallowed characters.', $field)); } // Skip duplicates. The renderer would return an empty string on second try. if (isset($widgets[$field])) { continue; } // Wrap an exception from PropertyAccessor in a BadRequestException. try { $fieldView = $this->propertyAccessor->getValue($view, $field); } catch (ExceptionInterface $e) { throw new BadRequestException(sprintf('FormView not found for field identifier "%s".', $field), 0, $e); } // Render the field widget. $widgets[$field] = $this->renderer->searchAndRenderBlock($fieldView, 'widget'); } $this->getPresenter()->sendJson((object) ['widgets' => $widgets]); }
/** * {@inheritdoc} */ public function initRuntime(\Twig_Environment $environment) { $this->renderer->setEnvironment($environment); }
/** * Render Function Form Javascript * * @param FormView $view * * @return string */ public function renderJavascript(FormView $view) { return $this->renderer->searchAndRenderBlock($view, 'javascript'); }
/** * Makes a technical name human readable. * * @param string $text The text to humanize. * * @return string The humanized text. */ public function humanize($text) { return $this->renderer->humanize($text); }
/** * @param TwigRendererInterface $innerRenderer * @param FormRendererEngineInterface $formRendererEngine * @param \Twig_Environment $environment */ public function __construct(TwigRendererInterface $innerRenderer, FormRendererEngineInterface $formRendererEngine, \Twig_Environment $environment) { $innerRenderer->setEnvironment($environment); parent::__construct($innerRenderer, $formRendererEngine); }
/** * @param TwigRendererInterface $innerRenderer * @param \Twig_Environment $environment */ public function __construct(TwigRendererInterface $innerRenderer, \Twig_Environment $environment) { $innerRenderer->setEnvironment($environment); parent::__construct($innerRenderer); }