web-dev-qa-db-fra.com

Obtenir les paramètres d'URL dans le module personnalisé

J'ai créé un bloc personnalisé comme ceci:

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
    );
  }
}

Et je veux maintenant obtenir par programme certains paramètres de l'URL.

Par exemple:

Si l'URL est http://localhost/drup/hello/5569, je souhaite récupérer la valeur 5569 dans mon module. 

J'ai essayé arg(1) et drupal_get_query_parameters() mais j'ai reçu les messages d'erreur suivants:

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

et

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

Comment puis-je obtenir les paramètres?

4
zied123456

J'avais l'habitude d'obtenir la valeur du paramètre de l'URL (localhost/check/myform? Mob = 89886665)

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

Et appliqué dans ma requête sélectionnée

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

Mais sur plusieurs valeurs de paramètre, je réussis maintenant ( 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

Utilisez \Drupal\Core\Routing;:

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

arg () est obsolète dans drupal 8, cependant nous pouvons obtenir des valeurs similaires à la fonction arg () dans drupal 7 & 6 

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

La sortie serait des paramètres en url sauf basepath ou (baseurl),

Array
(
   [0] => 
   [1] => node
   [2] => add
)
4
$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'

J'ai utilisé {node} comme arg (1). Et je peux y accéder en utilisant * -> getParameter ('node');

J'espère que cela fonctionnera.

2
Monal Soft

Si votre url est comme ceci ci-dessous exemple 

http://localhost/drupal/node/6666

Ensuite, vous devez obtenir le chemin complet de l'URL par 

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

puis exploser le chemin pour obtenir le tableau d'arguments.

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

Un autre exemple si la valeur est passée par une clé dans l'URL comme ci-dessous, où id contient la valeur

http://localhost/drupal?id=123

Vous pouvez obtenir l'identifiant sur demande drupal

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

Pour obtenir un paramètre de requête à partir de l’URL, vous pouvez utiliser les éléments suivants: Si vous avez l’URL par exemple,

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

Pour obtenir "uid" depuis l'URL, utilisez ..

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

Pour obtenir "num" à partir de l'URL, utilisez ..

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