2017-08-31 1 views
0

Ich arbeite auf einer Drupal 8 Seite. In einer Seite habe ich einen PHP-Block, der ein Formular mit GET-Methode enthält.PHP vollständige URL wiederherstellen drupal 8

In der Seite, die Informationen erhalten habe ich eine URL, die wie site/page?param1=value1&param2=value2 aussieht. Ich brauche value2.

Ich habe versucht, so viele Lösungen, aber ich finde nicht die Lösung:

$_GET['id']; 
// returns : null 

\Drupal::service('path.current')->getPath(); 
// returns : '/node/4' 

$_SERVER['PHP_SELF']; 
// returns : 'site/page' 

$_SERVER['REQUEST_URI']; 
// returns : 'site/page' 

$_SERVER['argv']; 
// returns : null 

$_SERVER['HTTP_REFERER']; 
// returns : 'http://site/node/4/edit' 

\Drupal::request()->query->all(); 
// returns : array (size=0) empty 

$path = \Drupal::request()->getpathInfo(); 
// returns : '/page' 

\Drupal::request()->getRequestUri(); 
// returns : 'site/page' 

\Drupal::request()->attributes->get('_system_path'); 
// returns : null 

\Drupal::service('path.alias_manager')->getAliasByPath($current_path); 
// returns : '/page' 

$_SERVER['QUERY_STRING']; 
// returns : '' 

\Drupal::destination()->getAsArray(); 
// returns : 'site/page' 

Kann mir jemand helfen, diese Wert2, die in der URL zu finden ist?

Antwort

1

Sie können URL-Parameter (n) unter Verwendung mehrerer Dienste wie abrufen:

  • request_stack
  • path.current

current_route_match Hier zeige ich Ihnen, wie Sie Ihre value2 von bekommen die param2 unter Verwendung der request_stack:

// Initialize the service. 
$requestStack = \Drupal::service('request_stack'); 

// Get your Master Request. 
$masterRequest = $requestStack->getMasterRequest(); 

// Get the value from a GET parameter. 
$value = $masterRequest->query->get('param2'); 

Um weiter zu gehen:


Hoffe, es wird Ihnen helfen!

+0

Wenn ich das versuche, habe ich eine "Null". Ich denke, das Problem ist von der Form und ich werde versuchen, darauf zu schauen. Vielen Dank. – Elehyan

+0

Was ist die echte URL? Könnten Sie bitte auch hier Ihren Formularcode hinzufügen? Und die Routing-Datei (routing.yml), die Ihr Formular unterstützt. –

+0

Sie könnten auch versuchen, 'CurrentRequest' anstelle von' MasterRequest' zu verwenden. Z.B. '$ request = $ requestStack-> getCurrentRequest();' Wenn es funktioniert, sind Sie in einer SubRequest, checken Sie den Link, den ich Ihnen über Anfragen gab. –