public function ViewExecutable::getUrl in Views (for Drupal 7) 8.3
Get the URL for the current view.
This URL will be adjusted for arguments.
2 calls to ViewExecutable::getUrl()
- ViewExecutable::_buildArguments in lib/
Drupal/ views/ ViewExecutable.php - Build all the arguments.
- ViewUI::renderPreview in views_ui/
lib/ Drupal/ views_ui/ ViewUI.php
File
- lib/
Drupal/ views/ ViewExecutable.php, line 1630 - Definition of Drupal\views\ViewExecutable.
Class
- ViewExecutable
- An object to contain all of the data to generate a view, plus the member functions to build the view query, execute the query and render the output.
Namespace
Drupal\viewsCode
public function getUrl($args = NULL, $path = NULL) {
if (!empty($this->override_url)) {
return $this->override_url;
}
if (!isset($path)) {
$path = $this
->getPath();
}
if (!isset($args)) {
$args = $this->args;
// Exclude arguments that were computed, not passed on the URL.
$position = 0;
if (!empty($this->argument)) {
foreach ($this->argument as $argument_id => $argument) {
if (!empty($argument->is_default) && !empty($argument->options['default_argument_skip_url'])) {
unset($args[$position]);
}
$position++;
}
}
}
// Don't bother working if there's nothing to do:
if (empty($path) || empty($args) && strpos($path, '%') === FALSE) {
return $path;
}
$pieces = array();
$argument_keys = isset($this->argument) ? array_keys($this->argument) : array();
$id = current($argument_keys);
foreach (explode('/', $path) as $piece) {
if ($piece != '%') {
$pieces[] = $piece;
}
else {
if (empty($args)) {
// Try to never put % in a url; use the wildcard instead.
if ($id && !empty($this->argument[$id]->options['exception']['value'])) {
$pieces[] = $this->argument[$id]->options['exception']['value'];
}
else {
$pieces[] = '*';
// gotta put something if there just isn't one.
}
}
else {
$pieces[] = array_shift($args);
}
if ($id) {
$id = next($argument_keys);
}
}
}
if (!empty($args)) {
$pieces = array_merge($pieces, $args);
}
return implode('/', $pieces);
}