Ejemplo n.º 1
0
 public function generate($url_name, $parameters = [])
 {
     $routes = Application::Router()->getRoutes();
     $translator = Application::Translator();
     if (!isset($routes[$url_name])) {
         return $url_name;
     }
     // Ha szükséges be kell rakni a nyelvet is a paraméterek közé
     if ($translator != null && $translator->getStrategy() != Translator::STRATEGY_ONLY_COOKIE && !$routes[$url_name]["locale"] == LanguageRouter::LOCALE_NOT_ALLOWED) {
         $parameters["locale"] = $translator->getLocale();
     }
     $url = $routes[$url_name]["url"];
     $resultUrl = "";
     $index = 0;
     while (($firstPos = strpos($url, "{", $index)) != false) {
         $lastPos = strpos($url, "}", $firstPos);
         $name = explode(":", substr($url, $firstPos + 1, $lastPos - $firstPos - 1))[0];
         $resultUrl .= substr($url, $index, $firstPos - $index) . (isset($parameters[$name]) ? $parameters[$name] : "");
         $index = $lastPos + 1;
     }
     if ($index != strlen($url)) {
         $resultUrl .= substr($url, $index);
     }
     // Ha nincs semmi, akkor nem volt paraméter, másoljuk az egész url-t.
     if ($resultUrl === "") {
         $resultUrl = $url;
     }
     return $resultUrl;
 }
Ejemplo n.º 2
0
 /**
  * Registers services on the given container.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  *
  * @param Container $pimple A container instance
  */
 public function register(Container $pimple)
 {
     $pimple['url_generator'] = function ($c) {
         return new UrlGenerator(Application::Router());
     };
     //url_generate függvény hozzáadása a twighez
     $pimple->extend('twig', function ($twig, $c) {
         /** @var Twig $mytwig */
         $mytwig = $twig;
         /** @var UrlGenerator $urlGenerator */
         $urlGenerator = $c["url_generator"];
         $url_generator = new \Twig_SimpleFunction("url_generate", function ($url_name, $parameters = []) use($urlGenerator) {
             return $urlGenerator->generate($url_name, $parameters);
         });
         $mytwig->getTwigEnvironment()->addFunction($url_generator);
         return $mytwig;
     });
 }
Ejemplo n.º 3
0
 /**
  * A twig segítségével lerendereli a html tartalmat. AJAX kérések esetén csak a megadott template-t rendereli ki,
  * viszont ha nem AJAX kérést kapott a szerver, akkor a Twig inicializálásánál megadott oldalkeretbe tölti bele a
  * template-t.
  *
  * Ha mindenképpen azt szeretnénk, hogy csak a template fájl renderelődjön ki, akkor a $forceRawTemplate paramétert
  * true-ra kell állítani!
  *
  * A renderelésnél elérhető az összes olyan paraméter, amit az alkalmazás addPageFrameContent függvényén keresztül
  * lett beállítva. A Twig fájlokban ezek az 'app.*' változó néven keresztül érhetőek el.
  * Példa:
  *  $twig->addContentProvider(new PageTitleContentProvider("Oldal címe"));
  *
  *  <title>{{ app.page_title }}</title> ==> <title>Oldal címe</title>
  *
  * @param $templateName
  * @param array $parameters
  * @param bool $forceRawTemplate
  * @param null $desiredFrameTemplate
  * @throws HttpInternalErrorException
  */
 public function render($templateName, $parameters = [], $forceRawTemplate = false, $desiredFrameTemplate = null)
 {
     // Különböző contentek betöltése
     foreach ($this->contentProviders as $contentProvider) {
         $parameters["app"][$contentProvider->getKey()] = $contentProvider->getValue();
     }
     if ($this->useAjax || $forceRawTemplate) {
         print $this->twig->render($templateName, $parameters);
     } else {
         if (is_array($this->configuration["page_frame_template_path"])) {
             $templates = $this->configuration["page_frame_template_path"];
             $actualRoute = Application::Router()->getActualRoute();
             if ($desiredFrameTemplate != null) {
                 $desiredFrame = $desiredFrameTemplate;
             } elseif (isset($actualRoute["page_frame"])) {
                 $desiredFrame = Application::Router()->getActualRoute()["page_frame"];
             } else {
                 $desiredFrame = "default";
             }
             if (array_key_exists($desiredFrame, $templates)) {
                 $pageFrameName = $templates[$desiredFrame];
             } else {
                 throw new HttpInternalErrorException("Undefined page_frame template path in twig. Check configuration");
             }
         } else {
             $pageFrameName = $this->configuration["page_frame_template_path"];
         }
         $parameters["app"]["content_template_name"] = $templateName;
         print $this->twig->render($pageFrameName, $parameters);
     }
 }