Pimcore\View\Helper\Url::url PHP Метод

url() публичный Метод

public url ( array $urlOptions = [], null $name = null, boolean $reset = false, boolean $encode = true ) : string | void
$urlOptions array
$name null
$reset boolean
$encode boolean
Результат string | void
    public function url(array $urlOptions = [], $name = null, $reset = false, $encode = true)
    {
        if (!$urlOptions) {
            $urlOptions = [];
        }
        // when using $name = false we don't use the default route (happens when $name = null / ZF default behavior)
        // but just the query string generation using the given parameters
        // eg. $this->url(["foo" => "bar"], false) => /?foo=bar
        if ($name === null) {
            if (Staticroute::getCurrentRoute() instanceof Staticroute) {
                $name = Staticroute::getCurrentRoute()->getName();
            }
        }
        $siteId = null;
        if (Site::isSiteRequest()) {
            $siteId = Site::getCurrentSite()->getId();
        }
        // check for a site in the options, if valid remove it from the options
        $hostname = null;
        if (isset($urlOptions["site"])) {
            $config = Config::getSystemConfig();
            $site = $urlOptions["site"];
            if (!empty($site)) {
                try {
                    $site = Site::getBy($site);
                    unset($urlOptions["site"]);
                    $hostname = $site->getMainDomain();
                    $siteId = $site->getId();
                } catch (\Exception $e) {
                    Logger::warn("passed site doesn't exists");
                    Logger::warn($e);
                }
            } elseif ($config->general->domain) {
                $hostname = $config->general->domain;
            }
        }
        if ($name && ($route = Staticroute::getByName($name, $siteId))) {
            // assemble the route / url in Staticroute::assemble()
            $url = $route->assemble($urlOptions, $reset, $encode);
            // if there's a site, prepend the host to the generated URL
            if ($hostname && !preg_match("/^https?:/i", $url)) {
                $url = "//" . $hostname . $url;
            }
            return $url;
        }
        // this is to add support for arrays as values for the default \Zend_View_Helper_Url
        $unset = [];
        foreach ($urlOptions as $optionName => $optionValues) {
            if (is_array($optionValues)) {
                foreach ($optionValues as $key => $value) {
                    $urlOptions[$optionName . "[" . $key . "]"] = $value;
                }
                $unset[] = $optionName;
            }
        }
        foreach ($unset as $optionName) {
            unset($urlOptions[$optionName]);
        }
        try {
            return parent::url($urlOptions, $name, $reset, $encode);
        } catch (\Exception $e) {
            if (Tool::isFrontentRequestByAdmin()) {
                // routes can be site specific, so in editmode it's possible that we don't get
                // the right route (sites are not registered in editmode), so we cannot throw exceptions there
                return "ERROR_IN_YOUR_URL_CONFIGURATION:~ROUTE--" . $name . "--DOES_NOT_EXIST";
            }
            throw new \Exception("Route '" . $name . "' for building the URL not found");
        }
    }

Usage Example

 /**
  * @param string $code
  * @return string
  * @throws \Exception
  */
 public function createConfirmationLink($code)
 {
     $urlHelper = new UrlHelper();
     $confirmationLink = $urlHelper->url(array("code" => $code), Plugin::STATICROUTE_CONFIRMATIONCHECK_NAME);
     return $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . $confirmationLink;
 }
Url