it-swarm.com.de

Ruft URL-Parameter im benutzerdefinierten Modul ab

Ich habe einen benutzerdefinierten Block wie folgt erstellt:

class HelloBlock extends BlockBase implements BlockPluginInterface{

  /**
   * {@inheritdoc}
   */
  public function build() {
    $config = $this->getConfiguration();
    $result = db_query('SELECT * FROM {test}');
    return array(
      '#theme' => 'world',
      '#test' => $result
    );
  }
}

Und ich möchte jetzt programmgesteuert Parameter von der URL erhalten.

Zum Beispiel:

Wenn die URL http://localhost/drup/hello/5569 ist, möchte ich den Wert 5569 in meinem Modul abrufen. 

Ich habe arg(1) und drupal_get_query_parameters() ausprobiert, aber ich habe folgende Fehlermeldungen erhalten:

Call to undefined function `Drupal\hello\Plugin\Block\arg()`

und

Call to undefined function `Drupal\hello\Plugin\Block\drupal_get_query_parameters()`

Wie kann ich die Parameter erhalten?

4
zied123456

Ich habe den Parameterwert von der URL abgerufen (localhost/check/myform? Mob = 89886665).

$param = \Drupal::request()->query->all();

Und in meiner Auswahlabfrage angewendet

 $query = \Drupal::database()->select('profile_register', 'p1');
 $query->fields('p1');
 $query->condition('p1.mobileno', $edituseprof);
 $query->condition('publishstatus', 'no');
 $result = $query->execute()->fetchAll();

Aber bei mehreren Parameterwerten bin ich jetzt erfolgreich ( Ex: http://10.163.14.41/multisite/check/myform?mob=89886665&id=1 )

 $query = \Drupal::database()->select('profile_register', 'p1');
 $query->fields('p1');
 $query->condition('p1.mobileno', $edituseprof['mob']);
 $query->condition('p1.ids', $edituseprof['id']);
 $query->condition('publishstatus', 'no');
 $result = $query->execute()->fetchAll();
6
B.lakshman

Verwenden Sie \Drupal\Core\Routing;:

$parameters = \Drupal::routeMatch()->getParameters();
6
Manish yadav

arg () ist in drupal 8 veraltet, wir können jedoch Werte erhalten, wie die arg () - Funktion in drupal 7 und 6 

$path = \Drupal::request()->getpathInfo();
$arg  = explode('/',$path);
print_r($arg); exit(); 

Die Ausgabe wäre Parameter in URL, außer basepath oder (baseurl).

Array
(
   [0] => 
   [1] => node
   [2] => add
)
$route_match = \Drupal::service('current_route_match');
$abc = $route_match->getParameter('node'); //node is refrence to what you have written in you routing file i.e: 

in something.routing.yml
entity.node.somepath:
  path: '/some/{node}/path'

Ich habe {node} als arg (1) verwendet. Und ich kann mit * -> getParameter ('node') darauf zugreifen.

Hoffe das wird funktionieren.

2
Monal Soft

Wenn Ihre URL wie folgt ist, siehe Beispiel 

http://localhost/drupal/node/6666

Dann müssen Sie den vollständigen URL-Pfad über 

$current_path = \Drupal::request()->getPathInfo();

dann explodieren Sie den Pfad, um das Argument-Array zu erhalten.

$path_args = explode('/', $current_path);

Ein weiteres Beispiel, wenn ein Wert in der folgenden URL von einem Schlüssel übergeben wird, wobei id den Wert enthält

http://localhost/drupal?id=123

Sie erhalten die ID durch eine Drupal-Anfrage

$id = \Drupal::request()->query->get('id');
1
Rahul Chauhan

Um Abfrageparameter aus der URL zu erhalten, können Sie Folgendes verwenden: Wenn Sie die URL zum Beispiel haben,

domainname.com/page?uid=123&num=452

Um "uid" von der URL zu bekommen, benutze ..

$uid = \Drupal::request()->query->get('uid');

Um "num" von der URL zu erhalten, verwenden Sie ..

$num = \Drupal::request()->query->get('num');
0
Tanvir Ahmad